diff --git a/activitystreams/activity.go b/activitystreams/activity.go index 4eafa80..b1a5340 100644 --- a/activitystreams/activity.go +++ b/activitystreams/activity.go @@ -1,71 +1,71 @@ package activitystreams import ( "time" ) const ( toPublic = "https://www.w3.org/ns/activitystreams#Public" ) type Activity struct { BaseObject Actor string `json:"actor"` Published time.Time `json:"published,omitempty"` To []string `json:"to,omitempty"` CC []string `json:"cc,omitempty"` Object *Object `json:"object"` } func NewCreateActivity(o *Object) *Activity { a := Activity{ BaseObject: BaseObject{ - Context: []string{ + Context: []interface{}{ "https://www.w3.org/ns/activitystreams", }, ID: o.ID + "/activity", Type: "Create", }, Actor: o.AttributedTo, Object: o, } return &a } type Object struct { BaseObject Published time.Time `json:"published"` Summary *string `json:"summary,omitempty"` InReplyTo *string `json:"inReplyTo"` URL string `json:"url"` AttributedTo string `json:"attributedTo"` To []string `json:"to"` CC []string `json:"cc,omitempty"` Name string `json:"name,omitempty"` Content string `json:"content"` ContentMap map[string]string `json:"contentMap,omitempty"` } func NewNoteObject() *Object { o := Object{ BaseObject: BaseObject{ Type: "Note", }, To: []string{ toPublic, }, } return &o } func NewArticleObject() *Object { o := Object{ BaseObject: BaseObject{ Type: "Article", }, To: []string{ toPublic, }, } return &o } diff --git a/activitystreams/data.go b/activitystreams/data.go index 7c26588..d01d486 100644 --- a/activitystreams/data.go +++ b/activitystreams/data.go @@ -1,71 +1,71 @@ package activitystreams import "fmt" type ( BaseObject struct { - Context []string `json:"@context,omitempty"` - Type string `json:"type"` - ID string `json:"id"` + Context []interface{} `json:"@context,omitempty"` + Type string `json:"type"` + ID string `json:"id"` } PublicKey struct { ID string `json:"id"` Owner string `json:"owner"` PublicKeyPEM string `json:"publicKeyPem"` privateKey []byte } Image struct { Type string `json:"type"` MediaType string `json:"mediaType"` URL string `json:"url"` } ) type OrderedCollection struct { BaseObject TotalItems int `json:"totalItems"` First string `json:"first"` Last string `json:"last,omitempty"` } func NewOrderedCollection(accountRoot, collType string, items int) *OrderedCollection { oc := OrderedCollection{ BaseObject: BaseObject{ - Context: []string{ + Context: []interface{}{ "https://www.w3.org/ns/activitystreams", }, ID: accountRoot + "/" + collType, Type: "OrderedCollection", }, First: accountRoot + "/" + collType + "?page=1", TotalItems: items, } return &oc } type OrderedCollectionPage struct { BaseObject TotalItems int `json:"totalItems"` PartOf string `json:"partOf"` Next string `json:"next,omitempty"` Prev string `json:"prev,omitempty"` OrderedItems []Activity `json:"orderedItems"` } func NewOrderedCollectionPage(accountRoot, collType string, items, page int) *OrderedCollectionPage { ocp := OrderedCollectionPage{ BaseObject: BaseObject{ - Context: []string{ + Context: []interface{}{ "https://www.w3.org/ns/activitystreams", }, ID: fmt.Sprintf("%s/%s?page=%d", accountRoot, collType, page), Type: "OrderedCollectionPage", }, TotalItems: items, PartOf: accountRoot + "/" + collType, Next: fmt.Sprintf("%s/%s?page=%d", accountRoot, collType, page+1), } return &ocp } diff --git a/activitystreams/person.go b/activitystreams/person.go index 57daa0f..3b43279 100644 --- a/activitystreams/person.go +++ b/activitystreams/person.go @@ -1,50 +1,50 @@ package activitystreams type Person struct { BaseObject Inbox string `json:"inbox"` Outbox string `json:"outbox"` PreferredUsername string `json:"preferredUsername"` URL string `json:"url"` Name string `json:"name"` Icon Image `json:"icon"` Following string `json:"following"` Followers string `json:"followers"` Summary string `json:"summary"` PublicKey PublicKey `json:"publicKey"` } func NewPerson(accountRoot string) *Person { p := Person{ BaseObject: BaseObject{ Type: "Person", - Context: []string{ + Context: []interface{}{ "https://www.w3.org/ns/activitystreams", }, ID: accountRoot, }, Following: accountRoot + "/following", Followers: accountRoot + "/followers", Inbox: accountRoot + "/inbox", Outbox: accountRoot + "/outbox", } return &p } func (p *Person) AddPubKey(k []byte) { p.Context = append(p.Context, "https://w3id.org/security/v1") p.PublicKey = PublicKey{ ID: p.ID + "#main-key", Owner: p.ID, PublicKeyPEM: string(k), } } func (p *Person) SetPrivKey(k []byte) { p.PublicKey.privateKey = k } func (p *Person) GetPrivKey() []byte { return p.PublicKey.privateKey }