aboutsummaryrefslogtreecommitdiff
path: root/views
diff options
context:
space:
mode:
authorJulio Capote <jcapote@gmail.com>2022-12-30 03:32:16 +0000
committerJulio Capote <jcapote@gmail.com>2022-12-30 03:32:16 +0000
commit74ffcfe6b2c80b7cf459798dc42bd278075ccb50 (patch)
tree231880fb4de3cf900d03c33531d2afc9603432d3 /views
parenta4288b06bf13210721c8f2fae64bc12c118f9041 (diff)
downloadcommunique-74ffcfe6b2c80b7cf459798dc42bd278075ccb50.tar.gz
experiment with write JSON to database and munge it for collections
Diffstat (limited to 'views')
-rw-r--r--views/outbox.go114
1 files changed, 64 insertions, 50 deletions
diff --git a/views/outbox.go b/views/outbox.go
index fe87e24..97dd939 100644
--- a/views/outbox.go
+++ b/views/outbox.go
@@ -1,67 +1,81 @@
package views
import (
+ "bytes"
+
"git.capotej.com/capotej/communique/urls"
"github.com/go-fed/activity/streams"
)
-func RenderOutboxPage(name, domain string) (map[string]interface{}, error) {
+// 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) {
id, err := urls.UrlOutboxPage(name, domain)
if err != nil {
- return nil, err
- }
-
- partOf, err := urls.UrlOutbox(name, domain)
- if err != nil {
- return nil, err
+ return "", err
}
+ buf := &bytes.Buffer{}
+ buf.WriteString("{")
+ buf.WriteString("\"id\":\"" + id.String() + "\"")
+ buf.WriteString("}")
- 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
- // })
+ // partOf, err := urls.UrlOutbox(name, domain)
// if err != nil {
- // return nil, err
+ // return "", err
// }
- oc.SetActivityStreamsOrderedItems(itemsProp)
- return streams.Serialize(oc)
+ // 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
}
func RenderOutbox(name, domain string, totalItems int) (map[string]interface{}, error) {