aboutsummaryrefslogtreecommitdiff
path: root/views/helpers.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--views/helpers.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/views/helpers.go b/views/helpers.go
new file mode 100644
index 0000000..96c81bc
--- /dev/null
+++ b/views/helpers.go
@@ -0,0 +1,94 @@
+package views
+
+import (
+ "net/url"
+
+ "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
+}