Changes
10 changed files (+164/-101)
-
-
@@ -101,7 +101,7 @@ type Activity struct {// The notion of "context" used is intentionally vague. // The intended function is to serve as a means of grouping objects and activities that share a // common originating context or purpose. An example could be all activities relating to a common project or event. //Context ObjectOrLink `jsonld:"_"` Context ObjectOrLink `jsonld:"context,omitempty"` // The date and time describing the actual or expected ending time of the object. // When used with an Activity object, for instance, the endTime property specifies the moment // the activity concluded or is expected to conclude.
-
@@ -207,7 +207,7 @@ type IntransitiveActivity struct {// The notion of "context" used is intentionally vague. // The intended function is to serve as a means of grouping objects and activities that share a // common originating context or purpose. An example could be all activities relating to a common project or event. //Context ObjectOrLink `jsonld:"_"` Context ObjectOrLink `jsonld:"context,omitempty"` // The date and time describing the actual or expected ending time of the object. // When used with an Activity object, for instance, the endTime property specifies the moment // the activity concluded or is expected to conclude.
-
@@ -418,7 +418,7 @@ type Question struct {// The notion of "context" used is intentionally vague. // The intended function is to serve as a means of grouping objects and activities that share a // common originating context or purpose. An example could be all activities relating to a common project or event. //Context ObjectOrLink `jsonld:"_"` Context ObjectOrLink `jsonld:"context,omitempty"` // The date and time describing the actual or expected ending time of the object. // When used with an Activity object, for instance, the endTime property specifies the moment // the activity concluded or is expected to conclude.
-
@@ -693,9 +693,9 @@ func ViewNew(id ObjectID, ob ObjectOrLink) *View {// QuestionNew initializes a Question activity func QuestionNew(id ObjectID) *Question { q := Question{ID: id, Type: QuestionType} q.Name = make(NaturalLanguageValue) q.Content = make(NaturalLanguageValue) q.Summary = make(NaturalLanguageValue) q.Name = NaturalLanguageValueNew() q.Content = NaturalLanguageValueNew() q.Summary = NaturalLanguageValueNew() return &q }
-
@@ -715,9 +715,9 @@ func ActivityNew(id ObjectID, typ ActivityVocabularyType, ob ObjectOrLink) *Actityp = ActivityType } a := Activity{ID: id, Type: typ} a.Name = make(NaturalLanguageValue) a.Content = make(NaturalLanguageValue) a.Summary = make(NaturalLanguageValue) a.Name = NaturalLanguageValueNew() a.Content = NaturalLanguageValueNew() a.Summary = NaturalLanguageValueNew() a.Object = ob
-
@@ -730,9 +730,9 @@ func IntransitiveActivityNew(id ObjectID, typ ActivityVocabularyType) *Intransittyp = IntransitiveActivityType } i := IntransitiveActivity{ID: id, Type: typ} i.Name = make(NaturalLanguageValue) i.Content = make(NaturalLanguageValue) i.Summary = make(NaturalLanguageValue) i.Name = NaturalLanguageValueNew() i.Content = NaturalLanguageValueNew() i.Summary = NaturalLanguageValueNew() return &i }
-
@@ -1366,6 +1366,7 @@ func (a *Activity) UnmarshalJSON(data []byte) error {a.Type = getAPType(data) a.Name = getAPNaturalLanguageField(data, "name") a.Content = getAPNaturalLanguageField(data, "content") a.Summary = getAPNaturalLanguageField(data, "summary") u := getURIField(data, "url") if len(u) > 0 { a.URL = u
-
-
-
@@ -85,7 +85,7 @@ type Actor struct {// The notion of "context" used is intentionally vague. // The intended function is to serve as a means of grouping objects and activities that share a // common originating context or purpose. An example could be all activities relating to a common project or event. Context ObjectOrLink `jsonld:"_"` Context ObjectOrLink `jsonld:"context,omitempty"` // The date and time describing the actual or expected ending time of the object. // When used with an Activity object, for instance, the endTime property specifies the moment // the activity concluded or is expected to conclude.
-
@@ -200,9 +200,9 @@ func ActorNew(id ObjectID, typ ActivityVocabularyType) *Actor {} a := Actor{ID: id, Type: typ} a.Name = make(NaturalLanguageValue) a.Content = make(NaturalLanguageValue) a.Summary = make(NaturalLanguageValue) a.Name = NaturalLanguageValueNew() a.Content = NaturalLanguageValueNew() a.Summary = NaturalLanguageValueNew() in := InboxNew() out := OutboxNew() liked := LikedNew()
-
@@ -210,7 +210,7 @@ func ActorNew(id ObjectID, typ ActivityVocabularyType) *Actor {a.Inbox = in a.Outbox = out a.Liked = liked a.PreferredUsername = make(NaturalLanguageValue, 0) a.PreferredUsername = NaturalLanguageValueNew() return &a }
-
-
-
@@ -42,7 +42,7 @@ type Collection struct {// The notion of "context" used is intentionally vague. // The intended function is to serve as a means of grouping objects and activities that share a // common originating context or purpose. An example could be all activities relating to a common project or event. //Context ObjectOrLink `jsonld:"_"` Context ObjectOrLink `jsonld:"context,omitempty"` // The date and time describing the actual or expected ending time of the object. // When used with an Activity object, for instance, the endTime property specifies the moment // the activity concluded or is expected to conclude.
-
@@ -129,7 +129,7 @@ type OrderedCollection struct {// The notion of "context" used is intentionally vague. // The intended function is to serve as a means of grouping objects and activities that share a // common originating context or purpose. An example could be all activities relating to a common project or event. //Context ObjectOrLink `jsonld:"_"` Context ObjectOrLink `jsonld:"context,omitempty"` // The date and time describing the actual or expected ending time of the object. // When used with an Activity object, for instance, the endTime property specifies the moment // the activity concluded or is expected to conclude.
-
@@ -238,18 +238,18 @@ func ValidCollectionType(typ ActivityVocabularyType) bool {// CollectionNew initializes a new Collection func CollectionNew(id ObjectID) *Collection { c := Collection{ID: id, Type: CollectionType} c.Name = make(NaturalLanguageValue) c.Content = make(NaturalLanguageValue) c.Summary = make(NaturalLanguageValue) c.Name = NaturalLanguageValueNew() c.Content = NaturalLanguageValueNew() c.Summary = NaturalLanguageValueNew() return &c } // CollectionNew initializes a new Collection func OrderedCollectionNew(id ObjectID) *OrderedCollection { o := OrderedCollection{ID: id, Type: OrderedCollectionType} o.Name = make(NaturalLanguageValue) o.Content = make(NaturalLanguageValue) o.Summary = make(NaturalLanguageValue) o.Name = NaturalLanguageValueNew() o.Content = NaturalLanguageValueNew() o.Summary = NaturalLanguageValueNew() return &o }
-
-
-
@@ -19,9 +19,9 @@ func InboxNew() *Inbox {id := ObjectID("inbox") i := Inbox{ID: id, Type: OrderedCollectionType} i.Name = make(NaturalLanguageValue) i.Content = make(NaturalLanguageValue) i.Summary = make(NaturalLanguageValue) i.Name = NaturalLanguageValueNew() i.Content = NaturalLanguageValueNew() i.Summary = NaturalLanguageValueNew() i.TotalItems = 0
-
-
-
@@ -16,9 +16,9 @@ func LikedNew() *Liked {id := ObjectID("liked") l := Liked{ID: id, Type: OrderedCollectionType} l.Name = make(NaturalLanguageValue) l.Content = make(NaturalLanguageValue) l.Summary = make(NaturalLanguageValue) l.Name = NaturalLanguageValueNew() l.Content = NaturalLanguageValueNew() l.Summary = NaturalLanguageValueNew() l.TotalItems = 0
-
-
-
@@ -119,10 +119,33 @@ type (MimeType string // LangRef is the type for a language reference, should be ISO 639-1 language specifier. LangRef string LangRefValue struct { Ref LangRef Value string } // NaturalLanguageValue is a mapping for multiple language values NaturalLanguageValue map[LangRef]string NaturalLanguageValue []LangRefValue ) func NaturalLanguageValueNew() NaturalLanguageValue { return make(NaturalLanguageValue, 0) } func (n NaturalLanguageValue) Get(ref LangRef) string { for _, val := range n { if val.Ref == ref { return val.Value } } return "" } func (n *NaturalLanguageValue) Set(ref LangRef, v string) error { t := append(*n, LangRefValue{ref, v}) *n = t return nil } // IsLink validates if currentActivity Pub Object is a Link func (o Object) IsLink() bool { return false
-
@@ -135,19 +158,26 @@ func (o Object) IsObject() bool {// MarshalJSON serializes the NaturalLanguageValue into JSON func (n NaturalLanguageValue) MarshalJSON() ([]byte, error) { if len(n) == 0 { return json.Marshal(nil) } if len(n) == 1 { for _, v := range n { return json.Marshal(v) return json.Marshal(v.Value) } } mm := make(map[LangRef]string) for _, val := range n { mm[val.Ref] = val.Value } return json.Marshal(map[LangRef]string(n)) return json.Marshal(mm) } // First returns the first element in the map func (n NaturalLanguageValue) First() string { for _, v := range n { return v return v.Value } return "" }
-
@@ -169,7 +199,7 @@ func (n *NaturalLanguageValue) Append(lang LangRef, value string) error {} else { t = *n } t[lang] = value t = append(*n, LangRefValue{lang, value}) *n = t return nil
-
@@ -340,9 +370,9 @@ func ObjectNew(id ObjectID, typ ActivityVocabularyType) *Object {typ = ObjectType } o := Object{ID: id, Type: typ} o.Name = make(NaturalLanguageValue) o.Content = make(NaturalLanguageValue) o.Summary = make(NaturalLanguageValue) o.Name = NaturalLanguageValueNew() o.Content = NaturalLanguageValueNew() o.Summary = NaturalLanguageValueNew() return &o }
-
-
-
@@ -50,12 +50,15 @@ func TestValidObjectType(t *testing.T) {} func TestMarshalJSON(t *testing.T) { m := make(map[LangRef]string) m["en"] = "test" m["de"] = "test" n := NaturalLanguageValue(m) result, err := n.MarshalJSON() m := NaturalLanguageValue{ { "en", "test", }, { "de", "test", }, } result, err := m.MarshalJSON() if err != nil { t.Errorf("Failed marshaling '%v'", err) }
-
@@ -63,10 +66,14 @@ func TestMarshalJSON(t *testing.T) {if string(result) != mRes { t.Errorf("Different results '%v' vs. '%v'", string(result), mRes) } //n := NaturalLanguageValueNew() //result, err := n.MarshalJSON() s := make(map[LangRef]string) s["en"] = "test" n1 := NaturalLanguageValue(s) n1 := NaturalLanguageValue{{ "en", "test", }} result1, err1 := n1.MarshalJSON() if err1 != nil { t.Errorf("Failed marshaling '%v'", err1)
-
@@ -78,10 +85,14 @@ func TestMarshalJSON(t *testing.T) {} func TestNaturalLanguageValue_MarshalJSON(t *testing.T) { p := make(NaturalLanguageValue, 2) p["en"] = "the test" p["fr"] = "le test" p := NaturalLanguageValue{ { "en", "the test", }, { "fr", "le test", }, } js := "{\"en\":\"the test\",\"fr\":\"le test\"}" out, err := p.MarshalJSON()
-
@@ -91,8 +102,11 @@ func TestNaturalLanguageValue_MarshalJSON(t *testing.T) {if js != string(out) { t.Errorf("Different marshal result '%s', instead of '%s'", out, js) } p1 := make(NaturalLanguageValue, 1) p1["en"] = "the test" p1 :=NaturalLanguageValue{ { "en", "the test", }, } out1, err1 := p1.MarshalJSON()
-
@@ -192,6 +206,23 @@ func TestRecipientsDeduplication(t *testing.T) {} } func TestNaturalLanguageValue_Get(t *testing.T) { testVal := "test" a := NaturalLanguageValue{{NilLangRef, testVal}} if a.Get(NilLangRef) != testVal { t.Errorf("Invalid Get result. Expected %s received %s", testVal, a.Get(NilLangRef)) } } func TestNaturalLanguageValue_Set(t *testing.T) { testVal := "test" a := NaturalLanguageValue{{NilLangRef, "ana are mere"}} err := a.Set(LangRef("en"), testVal) if err != nil { t.Errorf("Received error when doing Set %s", err) } } func TestNaturalLanguageValue_Append(t *testing.T) { var a NaturalLanguageValue
-
@@ -205,8 +236,8 @@ func TestNaturalLanguageValue_Append(t *testing.T) {if len(a) != 1 { t.Errorf("Invalid append of one element to %T. Size %d != 1", a, len(a)) } if a[langEn] != valEn { t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langEn, valEn, a[langEn]) if a.Get(langEn) != valEn { t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langEn, valEn, a.Get(langEn)) } langDe := LangRef("de") valDe := "randomisch"
-
@@ -215,11 +246,11 @@ func TestNaturalLanguageValue_Append(t *testing.T) {if len(a) != 2 { t.Errorf("Invalid append of one element to %T. Size %d != 2", a, len(a)) } if a[langEn] != valEn { t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langEn, valEn, a[langEn]) if a.Get(langEn) != valEn { t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langEn, valEn, a.Get(langEn)) } if a[langDe] != valDe { t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langDe, valDe, a[langDe]) if a.Get(langDe) != valDe { t.Errorf("Invalid append of one element to %T. Value of %q not equal to %q, but %q", a, langDe, valDe, a.Get(langDe)) } }
-
@@ -258,14 +289,14 @@ func TestNaturalLanguageValue_UnmarshalFullObjectJSON(t *testing.T) {t.Error(err) } for lang, val := range a { if lang != LangRef(langEn) && lang != LangRef(langDe) { if val.Ref != LangRef(langEn) && val.Ref != LangRef(langDe) { t.Errorf("Invalid json unmarshal for %T. Expected lang %q or %q, found %q", a, langEn, langDe, lang) } if lang == LangRef(langEn) && val != valEn { if val.Ref == LangRef(langEn) && val.Value != valEn { t.Errorf("Invalid json unmarshal for %T. Expected value %q, found %q", a, valEn, val) } if lang == LangRef(langDe) && val != valDe { if val.Ref == LangRef(langDe) && val.Value != valDe { t.Errorf("Invalid json unmarshal for %T. Expected value %q, found %q", a, valDe, val) } }
-
-
-
@@ -15,9 +15,9 @@ func OutboxNew() *Outbox {id := ObjectID("outbox") i := Outbox{ID: id, Type: OrderedCollectionType} i.Name = make(NaturalLanguageValue) i.Content = make(NaturalLanguageValue) i.Summary = make(NaturalLanguageValue) i.Name = NaturalLanguageValueNew() i.Content = NaturalLanguageValueNew() i.Summary = NaturalLanguageValueNew() i.TotalItems = 0
-
-
-
@@ -12,8 +12,8 @@ import (func TestAcceptSerialization(t *testing.T) { obj := a.AcceptNew("https://localhost/myactivity", nil) obj.Name = make(a.NaturalLanguageValue, 1) obj.Name["en"] = "test" obj.Name["fr"] = "teste" obj.Name.Set("en", "test") obj.Name.Set("fr", "teste") uri := "https://www.w3.org/ns/activitystreams" p := j.WithContext(j.IRI(uri))
-
@@ -29,11 +29,11 @@ func TestAcceptSerialization(t *testing.T) {if !strings.Contains(string(data), string(obj.ID)) { t.Errorf("Could not find id %#v in output %s", string(obj.ID), data) } if !strings.Contains(string(data), string(obj.Name["en"])) { t.Errorf("Could not find name %#v in output %s", string(obj.Name["en"]), data) if !strings.Contains(string(data), string(obj.Name.Get("en"))) { t.Errorf("Could not find name %#v in output %s", string(obj.Name.Get("en")), data) } if !strings.Contains(string(data), string(obj.Name["fr"])) { t.Errorf("Could not find name %#v in output %s", string(obj.Name["fr"]), data) if !strings.Contains(string(data), string(obj.Name.Get("fr"))) { t.Errorf("Could not find name %#v in output %s", string(obj.Name.Get("fr")), data) } if !strings.Contains(string(data), string(obj.Type)) { t.Errorf("Could not find activity type %#v in output %s", obj.Type, data)
-
@@ -43,7 +43,7 @@ func TestAcceptSerialization(t *testing.T) {func TestCreateActivityHTTPSerialization(t *testing.T) { id := a.ObjectID("test_object") obj := a.AcceptNew(id, nil) obj.Name["en"] = "Accept New" obj.Name.Set("en","Accept New") uri := string(a.ActivityBaseURI)
-
@@ -58,8 +58,8 @@ func TestCreateActivityHTTPSerialization(t *testing.T) {if !strings.Contains(string(data), string(obj.ID)) { t.Errorf("Could not find id %#v in output %s", string(obj.ID), data) } if !strings.Contains(string(data), string(obj.Name["en"])) { t.Errorf("Could not find name %#v in output %s", string(obj.Name["en"]), data) if !strings.Contains(string(data), obj.Name.Get("en")) { t.Errorf("Could not find name %s in output %s", obj.Name.Get("en"), data) } if !strings.Contains(string(data), string(obj.Type)) { t.Errorf("Could not find activity type %#v in output %s", obj.Type, data)
-
-
-
@@ -200,9 +200,9 @@ var allTests = tests{Href: a.URI("http://example.org/abc"), HrefLang: a.LangRef("en"), MediaType: a.MimeType("text/html"), Name: a.NaturalLanguageValue{ a.LangRef(a.NilLangRef): "An example link", }, Name: a.NaturalLanguageValue{{ a.NilLangRef, "An example link", }}, }, }, "object_with_url": testPair{
-
@@ -220,9 +220,9 @@ var allTests = tests{result: &a.Object{ Type: a.ObjectType, ID: a.ObjectID("http://www.test.example/object/1"), Name: a.NaturalLanguageValue{ a.LangRef(a.NilLangRef): "A Simple, non-specific object", }, Name: a.NaturalLanguageValue{{ a.NilLangRef, "A Simple, non-specific object", }}, }, }, "object_with_replies": testPair{
-
@@ -240,7 +240,7 @@ var allTests = tests{&a.Object{ ID: a.ObjectID("http://www.test.example/object/1/replies/2"), Type: a.ArticleType, Name: a.NaturalLanguageValue{a.NilLangRef: "Example title"}, Name: a.NaturalLanguageValue{{a.NilLangRef, "Example title"}}, }, }, },
-
@@ -252,18 +252,18 @@ var allTests = tests{// blank: &a.Activity{}, // result: &a.Activity{ // Type: a.ActivityType, // Summary: a.NaturalLanguageValue{a.LangRef(a.NilLangRef): "Sally did something to a note"}, // Summary: a.NaturalLanguageValue{{a.NilLangRef, "Sally did something to a note"}}, // Actor: a.Actor(a.Person{ // Type: a.PersonType, // Name: a.NaturalLanguageValue{ // a.LangRef(a.NilLangRef): "Sally", // }, // Name: a.NaturalLanguageValue{{ // a.NilLangRef, "Sally", // }}, // }), // Object: a.Object{ // Type: a.NoteType, // Name: a.NaturalLanguageValue{ // a.LangRef(a.NilLangRef): "A Note", // }, // Name: a.NaturalLanguageValue{{ // a.NilLangRef, "A Note", // }}, // }, // }, //},
-
@@ -274,12 +274,12 @@ var allTests = tests{result: &a.Person{ ID: a.ObjectID("http://example.com/accounts/ana"), Type: a.PersonType, Name: a.NaturalLanguageValue{ a.LangRef(a.NilLangRef): "ana", }, PreferredUsername: a.NaturalLanguageValue{ a.LangRef(a.NilLangRef): "Ana", }, Name: a.NaturalLanguageValue{{ a.NilLangRef, "ana", }}, PreferredUsername: a.NaturalLanguageValue{{ a.NilLangRef, "Ana", }}, URL: a.URI("http://example.com/accounts/ana"), Outbox: &a.OutboxStream{ ID: a.ObjectID("http://example.com/accounts/ana/outbox"),
-
@@ -301,8 +301,8 @@ var allTests = tests{&a.Object{ ID: a.ObjectID("http://example.com/outbox/53c6fb47"), Type: a.ArticleType, Name: a.NaturalLanguageValue{a.NilLangRef: "Example title"}, Content: a.NaturalLanguageValue{a.NilLangRef: "Example content!"}, Name: a.NaturalLanguageValue{{a.NilLangRef, "Example title"}}, Content: a.NaturalLanguageValue{{a.NilLangRef, "Example content!"}}, URL: a.URI("http://example.com/53c6fb47"), MediaType: a.MimeType("text/markdown"), Published: time.Date(2018, time.July, 5, 16, 46, 44, 0, zLoc),
-
@@ -317,12 +317,13 @@ var allTests = tests{expected: true, blank: &a.NaturalLanguageValue{}, result: &a.NaturalLanguageValue{ a.LangRef(j.NilLangRef): ` { a.NilLangRef, ` `, a.LangRef("en"): "Ana got apples ⓐ", a.LangRef("fr"): "Aná a des pommes ⒜", a.LangRef("ro"): "Ana are mere", `}, {a.LangRef("en"), "Ana got apples ⓐ"}, {a.LangRef("fr"), "Aná a des pommes ⒜"}, {a.LangRef("ro"), "Ana are mere"}, }, }, "create_activity_simple": {
-
@@ -336,7 +337,7 @@ var allTests = tests{Type: a.NoteType, AttributedTo: a.IRI("https://littr.git/api/accounts/anonymous"), InReplyTo: a.IRI("https://littr.git/api/accounts/system/outbox/7ca154ff"), Content: a.NaturalLanguageValue{a.NilLangRef: "<p>Hello world</p>"}, Content: a.NaturalLanguageValue{{a.NilLangRef, "<p>Hello world</p>"}}, To: a.ObjectsArr{a.IRI("https://www.w3.org/ns/activitystreams#Public")}, }, },
-