48 lines
882 B
Go
48 lines
882 B
Go
|
package activitypub
|
||
|
|
||
|
import (
|
||
|
as "github.com/go-ap/activitystreams"
|
||
|
)
|
||
|
|
||
|
func JSONGetItemByType(typ as.ActivityVocabularyType) (as.Item, error) {
|
||
|
var ret as.Item
|
||
|
var err error
|
||
|
|
||
|
switch typ {
|
||
|
case as.ObjectType:
|
||
|
o := Object{}
|
||
|
o.Type = typ
|
||
|
ret = &o
|
||
|
case as.ActorType:
|
||
|
ret = &Object{}
|
||
|
o := ret.(*Object)
|
||
|
o.Type = typ
|
||
|
case as.ApplicationType:
|
||
|
ret = &Application{}
|
||
|
o := ret.(*Application)
|
||
|
o.Type = typ
|
||
|
case as.GroupType:
|
||
|
ret = &Group{}
|
||
|
o := ret.(*Group)
|
||
|
o.Type = typ
|
||
|
case as.OrganizationType:
|
||
|
ret = &Organization{}
|
||
|
o := ret.(*Organization)
|
||
|
o.Type = typ
|
||
|
case as.PersonType:
|
||
|
ret = &Person{}
|
||
|
o := ret.(*Person)
|
||
|
o.Type = typ
|
||
|
case as.ServiceType:
|
||
|
ret = &Service{}
|
||
|
o := ret.(*Service)
|
||
|
o.Type = typ
|
||
|
case "":
|
||
|
// when no type is available use a plain Object
|
||
|
ret = &Object{}
|
||
|
default:
|
||
|
return as.JSONGetItemByType(typ)
|
||
|
}
|
||
|
return ret, err
|
||
|
}
|