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.UrlActor(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.UrlActor(name, domain) if err != nil { return nil, err } actorProp := streams.NewActivityStreamsActorProperty() actorProp.AppendIRI(actorUrl) crea.SetActivityStreamsActor(actorProp) obj.AppendActivityStreamsNote(note) return crea, err }