aboutsummaryrefslogtreecommitdiff
path: root/views/outbox.go
diff options
context:
space:
mode:
Diffstat (limited to 'views/outbox.go')
-rw-r--r--views/outbox.go135
1 files changed, 88 insertions, 47 deletions
diff --git a/views/outbox.go b/views/outbox.go
index 47b976d..5c1ade3 100644
--- a/views/outbox.go
+++ b/views/outbox.go
@@ -6,8 +6,93 @@ import (
"git.capotej.com/capotej/communique/models"
"git.capotej.com/capotej/communique/urls"
"github.com/go-fed/activity/streams"
+ "github.com/go-fed/activity/streams/vocab"
)
+func activityObjectNote(name, domain string, v models.OutboxItem) (vocab.ActivityStreamsNote, error) {
+ var err error
+ note := streams.NewActivityStreamsNote()
+
+ noteUrl, err := urls.UrlNote(name, domain, string(v.Id))
+ if err != nil {
+ return nil, err
+ }
+ noteIdProp := streams.NewJSONLDIdProperty()
+ noteIdProp.Set(noteUrl)
+ note.SetJSONLDId(noteIdProp)
+ contentProp := streams.NewActivityStreamsContentProperty()
+ contentProp.AppendXMLSchemaString(string(v.Content))
+ note.SetActivityStreamsContent(contentProp)
+
+ actorUrl, err := urls.UrlProfile(name, domain)
+ if err != nil {
+ return nil, err
+ }
+ attrProp := streams.NewActivityStreamsAttributedToProperty()
+ attrProp.AppendIRI(actorUrl)
+ note.SetActivityStreamsAttributedTo(attrProp)
+
+ summaryProp := streams.NewActivityStreamsSummaryProperty()
+ summaryProp.AppendXMLSchemaString("")
+ note.SetActivityStreamsSummary(summaryProp)
+
+ noteUrlProp := streams.NewActivityStreamsUrlProperty()
+ noteUrlProp.AppendIRI(noteUrl)
+ note.SetActivityStreamsUrl(noteUrlProp)
+
+ publicUrl, err := url.Parse("https://www.w3.org/ns/activitystreams#Public")
+ if err != nil {
+ return nil, err
+ }
+ toProp := streams.NewActivityStreamsToProperty()
+ toProp.AppendIRI(publicUrl)
+ note.SetActivityStreamsTo(toProp)
+
+ publishedProp := streams.NewActivityStreamsPublishedProperty()
+ publishedProp.Set(v.CreatedAt)
+ note.SetActivityStreamsPublished(publishedProp)
+ return note, err
+}
+
+func activityObjectCreate(name, domain string, v models.OutboxItem, note vocab.ActivityStreamsNote) (vocab.ActivityStreamsCreate, error) {
+ var err error
+ crea := streams.NewActivityStreamsCreate()
+ obj := streams.NewActivityStreamsObjectProperty()
+
+ creaIdProp := streams.NewJSONLDIdProperty()
+ activityUrl, err := urls.UrlActivity(name, domain, string(v.Id))
+ if err != nil {
+ return nil, err
+ }
+ creaIdProp.Set(activityUrl)
+ crea.SetJSONLDId(creaIdProp)
+
+ crea.SetActivityStreamsObject(obj)
+
+ publicUrl, err := url.Parse("https://www.w3.org/ns/activitystreams#Public")
+ if err != nil {
+ return nil, err
+ }
+ toProp := streams.NewActivityStreamsToProperty()
+ toProp.AppendIRI(publicUrl)
+ crea.SetActivityStreamsTo(toProp)
+
+ publishedProp := streams.NewActivityStreamsPublishedProperty()
+ publishedProp.Set(v.CreatedAt)
+ crea.SetActivityStreamsPublished(publishedProp)
+
+ actorUrl, err := urls.UrlProfile(name, domain)
+ if err != nil {
+ return nil, err
+ }
+ actorProp := streams.NewActivityStreamsActorProperty()
+ actorProp.AppendIRI(actorUrl)
+ crea.SetActivityStreamsActor(actorProp)
+ obj.AppendActivityStreamsNote(note)
+
+ return crea, err
+}
+
// RenderOutboxCollection takes a page of ActivityStream objects as JSON strings and concatenates them together to return an
// ActivtyStreamsOrderedCollection
func RenderOutboxCollection(name, domain string, page []models.OutboxItem) (map[string]interface{}, error) {
@@ -40,59 +125,15 @@ func RenderOutboxCollection(name, domain string, page []models.OutboxItem) (map[
itemsProp := streams.NewActivityStreamsOrderedItemsProperty()
for _, v := range page {
- publishedProp := streams.NewActivityStreamsPublishedProperty()
- publishedProp.Set(v.CreatedAt)
- crea := streams.NewActivityStreamsCreate()
- obj := streams.NewActivityStreamsObjectProperty()
-
- creaIdProp := streams.NewJSONLDIdProperty()
- activityUrl, err := urls.UrlActivity(name, domain, string(v.Id))
+ var err error
+ note, err := activityObjectNote(name, domain, v)
if err != nil {
return nil, err
}
- creaIdProp.Set(activityUrl)
- crea.SetJSONLDId(creaIdProp)
-
- crea.SetActivityStreamsObject(obj)
- crea.SetActivityStreamsTo(toProp)
- crea.SetActivityStreamsPublished(publishedProp)
-
- actorUrl, err := urls.UrlProfile(name, domain)
+ crea, err := activityObjectCreate(name, domain, v, note)
if err != nil {
return nil, err
}
- actorProp := streams.NewActivityStreamsActorProperty()
- actorProp.AppendIRI(actorUrl)
- crea.SetActivityStreamsActor(actorProp)
-
- noteUrl, err := urls.UrlNote(name, domain, string(v.Id))
- if err != nil {
- return nil, err
- }
-
- note := streams.NewActivityStreamsNote()
- noteIdProp := streams.NewJSONLDIdProperty()
- noteIdProp.Set(noteUrl)
- note.SetJSONLDId(noteIdProp)
- contentProp := streams.NewActivityStreamsContentProperty()
- contentProp.AppendXMLSchemaString(string(v.Content))
- note.SetActivityStreamsContent(contentProp)
-
- attrProp := streams.NewActivityStreamsAttributedToProperty()
- attrProp.AppendIRI(actorUrl)
- note.SetActivityStreamsAttributedTo(attrProp)
-
- summaryProp := streams.NewActivityStreamsSummaryProperty()
- summaryProp.AppendXMLSchemaString("")
- note.SetActivityStreamsSummary(summaryProp)
-
- noteUrlProp := streams.NewActivityStreamsUrlProperty()
- noteUrlProp.AppendIRI(noteUrl)
- note.SetActivityStreamsUrl(noteUrlProp)
-
- note.SetActivityStreamsTo(toProp)
- note.SetActivityStreamsPublished(publishedProp)
- obj.AppendActivityStreamsNote(note)
itemsProp.AppendActivityStreamsCreate(crea)
}