From f8f2f3d89d321d0f4f6970f1c88361908e5fe567 Mon Sep 17 00:00:00 2001 From: Lukas Matt Date: Fri, 17 Mar 2017 12:03:38 +0100 Subject: [PATCH] Move saving posts to API related to ganggo/ganggo#6 --- app/controllers/like.go | 3 +++ app/controllers/post.go | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/app/controllers/like.go b/app/controllers/like.go index 4a73c5a..0525696 100644 --- a/app/controllers/like.go +++ b/app/controllers/like.go @@ -93,6 +93,9 @@ func (l ApiLike) Create() revel.Result { User: user, Message: entityLike, } + // NOTE the user table should start with 1 + // a null check would be better in respect of + // multiple database support if user.Person.UserID > 0 { var parentUser models.User err = parentUser.FindByID(user.Person.UserID) diff --git a/app/controllers/post.go b/app/controllers/post.go index 6ed2543..71758cb 100644 --- a/app/controllers/post.go +++ b/app/controllers/post.go @@ -18,7 +18,9 @@ package controllers // import ( + "time" "github.com/revel/revel" + "gopkg.in/ganggo/api.v0/app/helpers" "gopkg.in/ganggo/ganggo.v0/app/models" "gopkg.in/ganggo/ganggo.v0/app/jobs" federation "gopkg.in/ganggo/federation.v0" @@ -45,8 +47,12 @@ func (p ApiPost) Index() revel.Result { } func (p ApiPost) Create() revel.Result { - var post string - p.Params.Bind(&post, "post") + var ( + post models.Post + postText string + ) + + p.Params.Bind(&postText, "post") user, err := models.GetCurrentUser(p.Session["TOKEN"]) if err != nil { @@ -54,11 +60,32 @@ func (p ApiPost) Create() revel.Result { return p.RenderError(err) } + // create post + guid, err := helpers.Uuid() + if err != nil { + revel.ERROR.Println(err) + return p.RenderError(err) + } + + entity := federation.EntityStatusMessage{ + RawMessage: postText, + DiasporaHandle: user.Person.DiasporaHandle, + Guid: guid, + CreatedAt: time.Now().UTC(), + ProviderName: "GangGo", + Public: true, + } + + // save post locally + err = post.Create(&entity, nil) + if err != nil { + revel.ERROR.Println(err) + return p.RenderError(err) + } + dispatcher := jobs.Dispatcher{ User: user, - Message: federation.EntityStatusMessage{ - RawMessage: post, - }, + Message: &entity, } go dispatcher.Run() -- GitLab