diff options
Diffstat (limited to '')
-rw-r--r-- | views/helpers.go | 94 |
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 +} |