From 74ffcfe6b2c80b7cf459798dc42bd278075ccb50 Mon Sep 17 00:00:00 2001 From: Julio Capote Date: Thu, 29 Dec 2022 22:32:16 -0500 Subject: experiment with write JSON to database and munge it for collections --- views/outbox.go | 114 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 64 insertions(+), 50 deletions(-) (limited to 'views/outbox.go') 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) { -- cgit v1.2.3