aboutsummaryrefslogtreecommitdiff
path: root/resources/outbox.go
diff options
context:
space:
mode:
Diffstat (limited to 'resources/outbox.go')
-rw-r--r--resources/outbox.go29
1 files changed, 27 insertions, 2 deletions
diff --git a/resources/outbox.go b/resources/outbox.go
index f9a4aef..046ec6a 100644
--- a/resources/outbox.go
+++ b/resources/outbox.go
@@ -5,10 +5,11 @@ import (
"net/url"
"path"
+ "github.com/dgraph-io/badger/v3"
"github.com/go-fed/activity/streams"
)
-func RenderOutbox(name, domain string) (map[string]interface{}, error) {
+func RenderOutbox(name, domain string, db *badger.DB) (map[string]interface{}, error) {
id, err := url.Parse(path.Join("https://", domain, "actors", name, "outbox"))
if err != nil {
@@ -21,13 +22,37 @@ func RenderOutbox(name, domain string) (map[string]interface{}, error) {
}
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() {
+ item := it.Item()
+ // k := item.Key()
+ err := item.Value(func(v []byte) error {
+ i++
+ // fmt.Printf("key=%s, value=%s\n", k, v)
+ return nil
+ })
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+ })
+
+ itemsProp := streams.NewActivityStreamsTotalItemsProperty()
+ itemsProp.Set(i)
+ oc.SetActivityStreamsTotalItems(itemsProp)
+
ocProp := streams.NewActivityStreamsFirstProperty()
ocProp.SetIRI(first)
-
oc.SetActivityStreamsFirst(ocProp)
return streams.Serialize(oc)