Changes
8 changed files (+56/-30)
-
-
@@ -1542,10 +1542,7 @@ func (a *Activity) UnmarshalJSON(data []byte) error {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 } a.URL = getURIField(data, "url") a.Actor = getAPItem(data, "actor") a.Object = getAPItem(data, "object") a.Generator = getAPItem(data, "generator")
-
-
-
@@ -407,10 +407,7 @@ func (a *Actor) UnmarshalJSON(data []byte) error {a.Name = getAPNaturalLanguageField(data, "name") a.PreferredUsername = getAPNaturalLanguageField(data, "preferredUsername") a.Content = getAPNaturalLanguageField(data, "content") u := getURIField(data, "url") if len(u) > 0 { a.URL = u } a.URL = getURIField(data, "url") o := OrderedCollectionNew(ObjectID("test-outbox")) if v, _, _, err := jsonparser.Get(data, "outbox"); err == nil {
-
-
-
@@ -381,10 +381,7 @@ func (o *OrderedCollection) UnmarshalJSON(data []byte) error {o.Type = getAPType(data) o.Name = getAPNaturalLanguageField(data, "name") o.Content = getAPNaturalLanguageField(data, "content") u := getURIField(data, "url") if len(u) > 0 { o.URL = u } o.URL = getURIField(data, "url") o.TotalItems = uint(getAPInt(data, "totalItems")) it := getAPItems(data, "orderedItems") if it != nil {
-
@@ -403,15 +400,9 @@ func (c *Collection) UnmarshalJSON(data []byte) error {c.Type = getAPType(data) c.Name = getAPNaturalLanguageField(data, "name") c.Content = getAPNaturalLanguageField(data, "content") u := getURIField(data, "url") if len(u) > 0 { c.URL = u } c.URL = getURIField(data, "url") c.TotalItems = uint(getAPInt(data, "totalItems")) it := getAPItems(data, "items") if it != nil { c.Items = it } c.Items = getAPItems(data, "items") c.Published = getAPTime(data, "published") c.StartTime = getAPTime(data, "startTime") c.Updated = getAPTime(data, "updated")
-
-
-
@@ -122,8 +122,8 @@ func (l *Link) UnmarshalJSON(data []byte) error {l.Name = getAPNaturalLanguageField(data, "name") l.HrefLang = getAPLangRefField(data, "hrefLang") u := getURIField(data, "href") if len(u) > 0 { l.Href = u if !u.IsObject() { l.Href = u.GetLink() } //fmt.Printf("%s\n %#v", data, l)
-
-
-
@@ -602,10 +602,7 @@ func (o *Object) UnmarshalJSON(data []byte) error {o.Name = getAPNaturalLanguageField(data, "name") o.Content = getAPNaturalLanguageField(data, "content") o.Context = getAPItem(data, "context") u := getURIField(data, "url") if len(u) > 0 { o.URL = u } o.URL = getURIField(data, "url") o.MediaType = MimeType(getAPString(data, "mediaType")) o.Generator = getAPItem(data, "generator") o.AttributedTo = getAPItem(data, "attributedTo")
-
-
-
@@ -236,12 +236,39 @@ func getAPItemCollection(data []byte, prop string) ItemCollection {return it } func getURIField(data []byte, prop string) IRI { val, err := jsonparser.GetString(data, prop) func getURIField(data []byte, prop string) Item { val, typ, _, err := jsonparser.Get(data, prop) if err != nil { return IRI("") return nil } switch typ { case jsonparser.Object: return getAPItem(data, prop) case jsonparser.Array: var it ItemCollection jsonparser.ArrayEach(val, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { if _, err := url.Parse(string(value)); err == nil { it.Append(IRI(value)) return } i, err := getAPObjectByType(getAPType(value)) if err != nil { return } err = i.(json.Unmarshaler).UnmarshalJSON(value) if err != nil { return } it.Append(i) }) return it case jsonparser.String: return IRI(val) } return IRI(val) return nil } func getAPLangRefField(data []byte, prop string) LangRef {
-
-
-
@@ -0,0 +1,7 @@{ "@context":"https://www.w3.org/ns/activitystreams", "url": [ "http://littr.git/api/accounts/system", "http://littr.git/~system" ] }
-
-
-
@@ -213,6 +213,16 @@ var allTests = tests{URL: a.IRI("http://littr.git/api/accounts/system"), }, }, "object_with_url_collection": testPair{ expected: true, blank: &a.Object{}, result: &a.Object{ URL: a.ItemCollection{ a.IRI("http://littr.git/api/accounts/system"), a.IRI("http://littr.git/~system"), }, }, }, "object_simple": testPair{ expected: true, blank: &a.Object{},
-