aboutsummaryrefslogtreecommitdiff
path: root/resources/outbox.go
diff options
context:
space:
mode:
Diffstat (limited to 'resources/outbox.go')
-rw-r--r--resources/outbox.go67
1 files changed, 57 insertions, 10 deletions
diff --git a/resources/outbox.go b/resources/outbox.go
index 046ec6a..2656da4 100644
--- a/resources/outbox.go
+++ b/resources/outbox.go
@@ -9,35 +9,49 @@ import (
"github.com/go-fed/activity/streams"
)
-func RenderOutbox(name, domain string, db *badger.DB) (map[string]interface{}, error) {
- id, err := url.Parse(path.Join("https://", domain, "actors", name, "outbox"))
-
+func RenderOutboxPage(name, domain string, db *badger.DB) (map[string]interface{}, error) {
+ id, err := url.Parse(path.Join("https://", domain, "actors", name, "outbox") + "?page=true")
if err != nil {
return nil, fmt.Errorf("could not partse url: %w", err)
}
- first, err := url.Parse(path.Join("https://", domain, "actors", name, "outbox", "?=page=true"))
+ partOf, err := url.Parse(path.Join("https://", domain, "actors", name, "outbox"))
if err != nil {
return nil, fmt.Errorf("could not partse url: %w", err)
}
- oc := streams.NewActivityStreamsOrderedCollection()
+ oc := streams.NewActivityStreamsOrderedCollectionPage()
idProp := streams.NewJSONLDIdProperty()
idProp.Set(id)
oc.SetJSONLDId(idProp)
- var i int
+ partOfProp := streams.NewActivityStreamsPartOfProperty()
+ partOfProp.SetIRI(partOf)
+ oc.SetActivityStreamsPartOf(partOfProp)
+
+ itemsProp := streams.NewActivityStreamsOrderedItemsProperty()
+
db.View(func(txn *badger.Txn) error {
it := txn.NewIterator(badger.DefaultIteratorOptions)
defer it.Close()
- prefix := []byte("outbox:sample")
+ prefix := []byte("outbox:sample") // TODO
for it.Seek(prefix); it.ValidForPrefix(prefix); it.Next() {
item := it.Item()
- // k := item.Key()
+ k := item.Key()
err := item.Value(func(v []byte) error {
- i++
- // fmt.Printf("key=%s, value=%s\n", k, v)
+ fmt.Printf("key=%s, value=%s\n", k, v)
+ crea := streams.NewActivityStreamsCreate()
+ obj := streams.NewActivityStreamsObjectProperty()
+ crea.SetActivityStreamsObject(obj)
+
+ note := streams.NewActivityStreamsNote()
+ contentProp := streams.NewActivityStreamsContentProperty()
+ contentProp.AppendIRI(id)
+ note.SetActivityStreamsContent(contentProp)
+ obj.AppendActivityStreamsNote(note)
+
+ itemsProp.AppendActivityStreamsCreate(crea)
return nil
})
if err != nil {
@@ -47,6 +61,39 @@ func RenderOutbox(name, domain string, db *badger.DB) (map[string]interface{}, e
return nil
})
+ oc.SetActivityStreamsOrderedItems(itemsProp)
+ return streams.Serialize(oc)
+}
+
+func RenderOutbox(name, domain string, db *badger.DB) (map[string]interface{}, error) {
+ id, err := url.Parse(path.Join("https://", domain, "actors", name, "outbox") + "?page=true")
+
+ if err != nil {
+ return nil, fmt.Errorf("could not partse url: %w", err)
+ }
+
+ first, err := url.Parse(path.Join("https://", domain, "actors", name, "outbox") + "?page=true")
+ if err != nil {
+ return nil, fmt.Errorf("could not partse url: %w", err)
+ }
+
+ oc := streams.NewActivityStreamsOrderedCollection()
+
+ idProp := streams.NewJSONLDIdProperty()
+ idProp.Set(id)
+ oc.SetJSONLDId(idProp)
+
+ var i int
+ db.View(func(txn *badger.Txn) error {
+ it := txn.NewIterator(badger.DefaultIteratorOptions)
+ defer it.Close()
+ prefix := []byte("outbox:sample")
+ for it.Seek(prefix); it.ValidForPrefix(prefix); it.Next() {
+ i++
+ }
+ return nil
+ })
+
itemsProp := streams.NewActivityStreamsTotalItemsProperty()
itemsProp.Set(i)
oc.SetActivityStreamsTotalItems(itemsProp)