aboutsummaryrefslogtreecommitdiff
path: root/outboxGet.go
diff options
context:
space:
mode:
Diffstat (limited to 'outboxGet.go')
-rw-r--r--outboxGet.go120
1 files changed, 120 insertions, 0 deletions
diff --git a/outboxGet.go b/outboxGet.go
new file mode 100644
index 0000000..55c63f8
--- /dev/null
+++ b/outboxGet.go
@@ -0,0 +1,120 @@
+package main
+
+import "fmt"
+import "net/http"
+import "database/sql"
+import _ "github.com/lib/pq"
+import "encoding/json"
+
+func GetActorOutbox(w http.ResponseWriter, r *http.Request, db *sql.DB) {
+
+ actor := GetActorFromPath(db, r.URL.Path, "/")
+ var collection Collection
+
+ collection.OrderedItems = GetObjectFromDB(db, actor).OrderedItems
+
+ collection.AtContext.Context = "https://www.w3.org/ns/activitystreams"
+ collection.Actor = actor.Id
+
+ collection.TotalItems = GetObjectPostsTotalDB(db, actor)
+ collection.TotalImgs = GetObjectImgsTotalDB(db, actor)
+
+ enc, _ := json.MarshalIndent(collection, "", "\t")
+ w.Header().Set("Content-Type", "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"")
+ w.Write(enc)
+}
+
+
+
+func GetObjectsFromFollow(actor Actor) []ObjectBase {
+ var followingCol Collection
+ var followObj []ObjectBase
+ followingCol = GetActorCollection(actor.Following)
+ for _, e := range followingCol.Items {
+ var followOutbox Collection
+ var actor Actor
+ actor = GetActor(e.Id)
+ followOutbox = GetActorCollection(actor.Outbox)
+ for _, e := range followOutbox.OrderedItems {
+ followObj = append(followObj, e)
+ }
+ }
+ return followObj
+}
+
+func GetCollectionFromPath(db *sql.DB, path string) Collection {
+
+ var nColl Collection
+ var result []ObjectBase
+
+ query := fmt.Sprintf("SELECT id, name, content, type, published, attributedto, attachment, actor FROM activitystream WHERE id='%s' ORDER BY published desc;", path)
+
+ rows, err := db.Query(query)
+
+ CheckError(err, "error query collection path from db")
+
+ defer rows.Close()
+
+ for rows.Next(){
+ var actor Actor
+ var post ObjectBase
+ var attachID string
+
+ err = rows.Scan(&post.Id, &post.Name, &post.Content, &post.Type, &post.Published, &post.AttributedTo, &attachID, &actor.Id)
+
+ CheckError(err, "error scan object into post struct from path")
+
+ post.Actor = &actor
+
+ post.InReplyTo = GetInReplyToDB(db, post)
+
+ post.Replies = GetObjectRepliesDB(db, post)
+
+ post.Replies.TotalItems, post.Replies.TotalImgs = GetObjectRepliesDBCount(db, post)
+
+ post.Attachment = GetObjectAttachment(db, attachID)
+
+ result = append(result, post)
+ }
+
+ nColl.AtContext.Context = "https://www.w3.org/ns/activitystreams"
+
+ nColl.OrderedItems = result
+
+ return nColl
+}
+
+func GetObjectFromPath(db *sql.DB, path string) ObjectBase{
+
+ var nObj ObjectBase
+ var result []ObjectBase
+
+ query := fmt.Sprintf("SELECT id, name, content, type, published, attributedto, attachment, actor FROM activitystream WHERE id='%s' ORDER BY published desc;", path)
+
+ rows, err := db.Query(query)
+
+ CheckError(err, "error query collection path from db")
+
+ defer rows.Close()
+
+ for rows.Next(){
+ var post ObjectBase
+ var attachID string
+
+ err = rows.Scan(&post.Id, &post.Name, &post.Content, &post.Type, &post.Published, &post.AttributedTo, &attachID, &post.Actor)
+
+ CheckError(err, "error scan object into post struct from path")
+
+ post.Replies = GetObjectRepliesDB(db, post)
+
+ post.Replies.TotalItems, post.Replies.TotalImgs = GetObjectRepliesDBCount(db, post)
+
+ post.Attachment = GetObjectAttachment(db, attachID)
+
+ result = append(result, post)
+ }
+
+ nObj = result[0]
+
+ return nObj
+}