diff --git a/nsActivitystreams.go b/nsActivitystreams.go index 3c6e0af..8d06596 100644 --- a/nsActivitystreams.go +++ b/nsActivitystreams.go @@ -3,7 +3,7 @@ package goap import ( "time" - "github.com/datainq/xml-date-time" + xmldatetime "github.com/datainq/xml-date-time" "gitlab.com/mstarongitlab/goutils/sliceutils" ) @@ -28,54 +28,23 @@ func ParseASActorData(raw map[string]any, next BaseApChain) (BaseApChain, error) } type ASAlsoKnownAsData struct { - Next BaseApChain - Urls []string + FullIdType } func (cc *ASAlsoKnownAsData) GetSelfOrBase() (BaseApChain, bool) { - return cc.Next, true + return cc.FullIdType.GetSelfOrBase() } func (cc *ASAlsoKnownAsData) MarshalToMap() map[string]any { - return appendWithKey( - cc.Next.MarshalToMap(), - KEY_ACTIVITYSTREAMS_ALSOKNOWNAS, - sliceutils.Map(cc.Urls, func(t string) map[string]any { - return map[string]any{KEY_ID: t} - }), - ) + return cc.FullIdType.MarshalToMapWithName(KEY_ACTIVITYSTREAMS_ALSOKNOWNAS) } func ParseASAlsoKnownAsData(raw map[string]any, next BaseApChain) (BaseApChain, error) { - rawData1, ok := raw[KEY_ACTIVITYSTREAMS_ALSOKNOWNAS] - if !ok { - return nil, NoRequiredFieldError{KEY_ACTIVITYSTREAMS_ALSOKNOWNAS} + id, err := ParseIdTypeWithName(raw, next, KEY_ACTIVITYSTREAMS_ALSOKNOWNAS) + if err != nil { + return nil, err } - data1, ok := rawData1.([]map[string]any) - if !ok { - return nil, BadFieldValueError[[]map[string]any]{ - KEY_ACTIVITYSTREAMS_ALSOKNOWNAS, - rawData1, - []map[string]any{}, - } - } - urls := []string{} - for _, v := range data1 { - rawData2, ok := v[KEY_ID] - if !ok { - return nil, NoRequiredSubFieldError{KEY_ACTIVITYSTREAMS_ALSOKNOWNAS, KEY_ID} - } - data2, ok := rawData2.(string) - if !ok { - return nil, BadFieldValueError[string]{KEY_ACTIVITYSTREAMS_ALSOKNOWNAS, rawData2, ""} - } - urls = append(urls, data2) - } - delete(raw, KEY_ACTIVITYSTREAMS_ALSOKNOWNAS) - return &ASAlsoKnownAsData{ - Next: next, - Urls: urls, - }, nil + return &ASAlsoKnownAsData{FullIdType: *id}, nil } type ASAttachmentsData struct {