diff options
Diffstat (limited to 'outboxGet.go')
-rw-r--r-- | outboxGet.go | 119 |
1 files changed, 24 insertions, 95 deletions
diff --git a/outboxGet.go b/outboxGet.go index 576a98b..6e7bd47 100644 --- a/outboxGet.go +++ b/outboxGet.go @@ -1,117 +1,46 @@ package main import ( - "database/sql" "net/http" "encoding/json" "github.com/FChannel0/FChannel-Server/activitypub" + "github.com/FChannel0/FChannel-Server/config" "github.com/FChannel0/FChannel-Server/db" _ "github.com/lib/pq" ) -func GetActorOutbox(w http.ResponseWriter, r *http.Request, db *sql.DB) { - actor := GetActorFromPath(r.URL.Path, "/") +func GetActorOutbox(w http.ResponseWriter, r *http.Request) error { + actor, err := db.GetActorFromPath(r.URL.Path, "/") + if err != nil { + return err + } + var collection activitypub.Collection - collection.OrderedItems = GetActorObjectCollectionFromDB(actor.Id).OrderedItems + c, err := db.GetActorObjectCollectionFromDB(actor.Id) + if err != nil { + return err + } + collection.OrderedItems = c.OrderedItems + collection.AtContext.Context = "https://www.w3.org/ns/activitystreams" collection.Actor = &actor - collection.TotalItems = GetObjectPostsTotalDB(actor) - collection.TotalImgs = GetObjectImgsTotalDB(actor) - - enc, _ := json.Marshal(collection) - - w.Header().Set("Content-Type", activitystreams) - w.Write(enc) -} - -func GetCollectionFromPath(path string) activitypub.Collection { - - var nColl activitypub.Collection - var result []activitypub.ObjectBase - - query := `select id, name, content, type, published, attributedto, attachment, preview, actor from activitystream where id=$1 order by published desc` - - rows, err := db.Query(query, path) - - CheckError(err, "error query collection path from db") - - defer rows.Close() - - for rows.Next() { - var actor activitypub.Actor - var post activitypub.ObjectBase - var attachID string - var previewID string - - err = rows.Scan(&post.Id, &post.Name, &post.Content, &post.Type, &post.Published, &post.AttributedTo, &attachID, &previewID, &actor.Id) - - CheckError(err, "error scan object into post struct from path") - - post.Actor = actor.Id - - post.InReplyTo = GetInReplyToDB(post) - - var postCnt int - var imgCnt int - post.Replies, postCnt, imgCnt = GetObjectRepliesDB(post) - - post.Replies.TotalItems, post.Replies.TotalImgs = GetObjectRepliesCount(post) - - post.Replies.TotalItems = post.Replies.TotalItems + postCnt - post.Replies.TotalImgs = post.Replies.TotalImgs + imgCnt - - post.Attachment = GetObjectAttachment(attachID) - - post.Preview = GetObjectPreview(previewID) - - result = append(result, post) + collection.TotalItems, err = db.GetObjectPostsTotalDB(actor) + if err != nil { + return err } - nColl.AtContext.Context = "https://www.w3.org/ns/activitystreams" - - nColl.OrderedItems = result - - return nColl -} - -func GetObjectFromPath(path string) activitypub.ObjectBase { - var nObj activitypub.ObjectBase - - query := `select id, name, content, type, published, attributedto, attachment, preview, actor from activitystream where id=$1 order by published desc` - - rows, err := db.Query(query, path) - - CheckError(err, "error query collection path from db") - - defer rows.Close() - rows.Next() - var attachID string - var previewID string - - var nActor activitypub.Actor - nObj.Actor = nActor.Id - - err = rows.Scan(&nObj.Id, &nObj.Name, &nObj.Content, &nObj.Type, &nObj.Published, &nObj.AttributedTo, &attachID, &previewID, &nObj.Actor) - - CheckError(err, "error scan object into post struct from path") - - var postCnt int - var imgCnt int - - nObj.Replies, postCnt, imgCnt = GetObjectRepliesDB(nObj) - - nObj.Replies.TotalItems, nObj.Replies.TotalImgs = GetObjectRepliesCount(nObj) - - nObj.Replies.TotalItems = nObj.Replies.TotalItems + postCnt - nObj.Replies.TotalImgs = nObj.Replies.TotalImgs + imgCnt - - nObj.Attachment = GetObjectAttachment(attachID) + collection.TotalImgs, err = db.GetObjectImgsTotalDB(actor) + if err != nil { + return err + } - nObj.Preview = GetObjectPreview(previewID) + enc, _ := json.Marshal(collection) - return nObj + w.Header().Set("Content-Type", config.ActivityStreams) + _, err = w.Write(enc) + return err } |