diff options
-rw-r--r-- | views/activity.go | 14 | ||||
-rw-r--r-- | views/helpers.go | 94 | ||||
-rw-r--r-- | views/note.go | 12 | ||||
-rw-r--r-- | views/outbox.go | 85 |
4 files changed, 103 insertions, 102 deletions
diff --git a/views/activity.go b/views/activity.go index cd34b6c..33b73cb 100644 --- a/views/activity.go +++ b/views/activity.go @@ -1,20 +1,18 @@ package views import ( - "net/url" - "git.capotej.com/capotej/communique/models" "github.com/go-fed/activity/streams" ) -func RenderActivity(name, domain string, item models.OutboxItem) (map[string]interface{}, error) { - publicUrl, err := url.Parse("https://www.w3.org/ns/activitystreams#Public") +func RenderActivity(name, domain string, v models.OutboxItem) (map[string]interface{}, error) { + note, err := activityObjectNote(name, domain, v) + if err != nil { + return nil, err + } + crea, err := activityObjectCreate(name, domain, v, note) if err != nil { return nil, err } - toProp := streams.NewActivityStreamsToProperty() - toProp.AppendIRI(publicUrl) - crea := streams.NewActivityStreamsCreate() - crea.SetActivityStreamsTo(toProp) return streams.Serialize(crea) } 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 +} diff --git a/views/note.go b/views/note.go index 6d354ed..2563d01 100644 --- a/views/note.go +++ b/views/note.go @@ -1,20 +1,14 @@ package views import ( - "net/url" - "git.capotej.com/capotej/communique/models" "github.com/go-fed/activity/streams" ) -func RenderNote(name, domain string, item models.OutboxItem) (map[string]interface{}, error) { - publicUrl, err := url.Parse("https://www.w3.org/ns/activitystreams#Public") +func RenderNote(name, domain string, v models.OutboxItem) (map[string]interface{}, error) { + note, err := activityObjectNote(name, domain, v) if err != nil { return nil, err } - toProp := streams.NewActivityStreamsToProperty() - toProp.AppendIRI(publicUrl) - crea := streams.NewActivityStreamsNote() - crea.SetActivityStreamsTo(toProp) - return streams.Serialize(crea) + return streams.Serialize(note) } diff --git a/views/outbox.go b/views/outbox.go index 5c1ade3..4dd5ab5 100644 --- a/views/outbox.go +++ b/views/outbox.go @@ -6,93 +6,8 @@ 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) { |