aboutsummaryrefslogtreecommitdiff
path: root/views/outbox.go
diff options
context:
space:
mode:
Diffstat (limited to 'views/outbox.go')
-rw-r--r--views/outbox.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/views/outbox.go b/views/outbox.go
new file mode 100644
index 0000000..fe87e24
--- /dev/null
+++ b/views/outbox.go
@@ -0,0 +1,94 @@
+package views
+
+import (
+ "git.capotej.com/capotej/communique/urls"
+ "github.com/go-fed/activity/streams"
+)
+
+func RenderOutboxPage(name, domain string) (map[string]interface{}, 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
+ }
+
+ 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)
+}
+
+func RenderOutbox(name, domain string, totalItems int) (map[string]interface{}, error) {
+ id, err := urls.UrlOutbox(name, domain)
+
+ if err != nil {
+ return nil, err
+ }
+
+ first, err := urls.UrlOutboxPage(name, domain)
+ if err != nil {
+ return nil, err
+ }
+
+ oc := streams.NewActivityStreamsOrderedCollection()
+
+ idProp := streams.NewJSONLDIdProperty()
+ idProp.Set(id)
+ oc.SetJSONLDId(idProp)
+
+ itemsProp := streams.NewActivityStreamsTotalItemsProperty()
+ itemsProp.Set(totalItems)
+ oc.SetActivityStreamsTotalItems(itemsProp)
+
+ ocProp := streams.NewActivityStreamsFirstProperty()
+ ocProp.SetIRI(first)
+ oc.SetActivityStreamsFirst(ocProp)
+
+ return streams.Serialize(oc)
+}