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) }