aboutsummaryrefslogtreecommitdiff
path: root/views
diff options
context:
space:
mode:
authorJulio Capote <jcapote@gmail.com>2022-12-31 02:20:02 +0000
committerJulio Capote <jcapote@gmail.com>2022-12-31 02:20:02 +0000
commitc500a2be38afcbb5688537d97c7c3ee30a57dba4 (patch)
tree79cf1884ca7529299646b567b7705378bdf08fd3 /views
parent74ffcfe6b2c80b7cf459798dc42bd278075ccb50 (diff)
downloadcommunique-c500a2be38afcbb5688537d97c7c3ee30a57dba4.tar.gz
parse and persist feeds from handlers
Diffstat (limited to 'views')
-rw-r--r--views/outbox.go107
1 files changed, 41 insertions, 66 deletions
diff --git a/views/outbox.go b/views/outbox.go
index 97dd939..88f88c2 100644
--- a/views/outbox.go
+++ b/views/outbox.go
@@ -1,81 +1,56 @@
package views
import (
- "bytes"
-
+ "git.capotej.com/capotej/communique/models"
"git.capotej.com/capotej/communique/urls"
"github.com/go-fed/activity/streams"
)
// RenderOutboxCollection takes a page of ActivityStream objects as JSON strings and concatenates them together to return an
// ActivtyStreamsOrderedCollection
-func RenderOutboxCollection(name, domain string, page []string) (string, error) {
+func RenderOutboxCollection(name, domain string, page []models.PersisterResult) (map[string]interface{}, error) {
id, err := urls.UrlOutboxPage(name, domain)
if err != nil {
- return "", err
+ return nil, err
+ }
+
+ partOf, err := urls.UrlOutbox(name, domain)
+ if err != nil {
+ return nil, err
}
- buf := &bytes.Buffer{}
- buf.WriteString("{")
- buf.WriteString("\"id\":\"" + id.String() + "\"")
- buf.WriteString("}")
-
- // partOf, err := urls.UrlOutbox(name, domain)
- // if err != nil {
- // return "", err
- // }
-
- // result := make(map[string]interface{})
- // result["id"] = id.String()
- // result["partOf"] = partOf.String()
- // result["orderedItems"] = page
-
- // oc := streams.NewActivityStreamsOrderedCollectionPage()
-
- // idProp := streams.NewJSONLDIdProperty()
- // idProp.Set(id)
- // oc.SetJSONLDId(idProp)
-
- // partOfProp := streams.NewActivityStreamsPartOfProperty()
- // partOfProp.SetIRI(partOf)
- // oc.SetActivityStreamsPartOf(partOfProp)
-
- // itemsProp := streams.NewActivityStreamsOrderedItemsProperty()
-
- // // err = db.View(func(txn *badger.Txn) error {
- // // opts := badger.DefaultIteratorOptions
- // // opts.PrefetchValues = false
- // // it := txn.NewIterator(opts)
- // // defer it.Close()
- // // prefix := []byte("outbox:sample") // TODO
- // // for it.Seek(prefix); it.ValidForPrefix(prefix); it.Next() {
- // // item := it.Item()
- // // err := item.Value(func(v []byte) error {
- // // crea := streams.NewActivityStreamsCreate()
- // // obj := streams.NewActivityStreamsObjectProperty()
- // // crea.SetActivityStreamsObject(obj)
-
- // // note := streams.NewActivityStreamsNote()
- // // contentProp := streams.NewActivityStreamsContentProperty()
- // // contentProp.AppendXMLSchemaString(string(v))
- // // note.SetActivityStreamsContent(contentProp)
- // // obj.AppendActivityStreamsNote(note)
-
- // // itemsProp.AppendActivityStreamsCreate(crea)
- // // return nil
- // // })
- // // if err != nil {
- // // return err
- // // }
- // // }
- // // return nil
- // // })
- // // if err != nil {
- // // return nil, err
- // // }
-
- // oc.SetActivityStreamsOrderedItems(itemsProp)
- // return streams.Serialize(oc)
- return buf.String(), nil
+
+ result := make(map[string]interface{})
+ result["id"] = id.String()
+ result["partOf"] = partOf.String()
+ result["orderedItems"] = page
+
+ oc := streams.NewActivityStreamsOrderedCollectionPage()
+
+ idProp := streams.NewJSONLDIdProperty()
+ idProp.Set(id)
+ oc.SetJSONLDId(idProp)
+
+ partOfProp := streams.NewActivityStreamsPartOfProperty()
+ partOfProp.SetIRI(partOf)
+ oc.SetActivityStreamsPartOf(partOfProp)
+
+ itemsProp := streams.NewActivityStreamsOrderedItemsProperty()
+
+ for _, v := range page {
+ crea := streams.NewActivityStreamsCreate()
+ obj := streams.NewActivityStreamsObjectProperty()
+ crea.SetActivityStreamsObject(obj)
+
+ note := streams.NewActivityStreamsNote()
+ contentProp := streams.NewActivityStreamsContentProperty()
+ contentProp.AppendXMLSchemaString(string(v.Value))
+ note.SetActivityStreamsContent(contentProp)
+ obj.AppendActivityStreamsNote(note)
+
+ itemsProp.AppendActivityStreamsCreate(crea)
+ }
+ oc.SetActivityStreamsOrderedItems(itemsProp)
+ return streams.Serialize(oc)
}
func RenderOutbox(name, domain string, totalItems int) (map[string]interface{}, error) {