Add more support for Item be an ItemCollection at the same time

This commit is contained in:
Marius Orcsik 2019-12-01 19:47:31 +01:00
parent 7b9328863c
commit 495abe28e0
3 changed files with 28 additions and 14 deletions

View file

@ -858,23 +858,23 @@ func ToIntransitiveActivity(it Item) (*IntransitiveActivity, error) {
// FlattenIntransitiveActivityProperties flattens the IntransitiveActivity's properties from Object type to IRI
func FlattenIntransitiveActivityProperties(act *IntransitiveActivity) *IntransitiveActivity {
act.Actor = FlattenToIRI(act.Actor)
act.Target = FlattenToIRI(act.Target)
act.Result = FlattenToIRI(act.Result)
act.Origin = FlattenToIRI(act.Origin)
act.Result = FlattenToIRI(act.Result)
act.Instrument = FlattenToIRI(act.Instrument)
act.Actor = Flatten(act.Actor)
act.Target = Flatten(act.Target)
act.Result = Flatten(act.Result)
act.Origin = Flatten(act.Origin)
act.Result = Flatten(act.Result)
act.Instrument = Flatten(act.Instrument)
return act
}
// FlattenActivityProperties flattens the Activity's properties from Object type to IRI
func FlattenActivityProperties(act *Activity) *Activity {
act.Object = FlattenToIRI(act.Object)
act.Actor = FlattenToIRI(act.Actor)
act.Target = FlattenToIRI(act.Target)
act.Result = FlattenToIRI(act.Result)
act.Origin = FlattenToIRI(act.Origin)
act.Result = FlattenToIRI(act.Result)
act.Instrument = FlattenToIRI(act.Instrument)
act.Object = Flatten(act.Object)
act.Actor = Flatten(act.Actor)
act.Target = Flatten(act.Target)
act.Result = Flatten(act.Result)
act.Origin = Flatten(act.Origin)
act.Result = Flatten(act.Result)
act.Instrument = Flatten(act.Instrument)
return act
}

View file

@ -340,6 +340,20 @@ func (o *OrderedCollectionPage) Collection() ItemCollection {
func (o OrderedCollectionPage) IsCollection() bool {
return true
}
// Flatten checks if Item can be flatten to an IRI or array of IRIs and returns it if so
func Flatten(it Item) Item {
if it.IsCollection() {
if c, ok := it.(CollectionInterface); ok {
it = FlattenItemCollection(c.Collection())
}
}
if it != nil && len(it.GetLink()) > 0 {
return it.GetLink()
}
return it
}
// FlattenItemCollection flattens the Collection's properties from Object type to IRI
func FlattenItemCollection(c ItemCollection) ItemCollection {
if c != nil && len(c) > 0 {

View file

@ -801,7 +801,7 @@ func FlattenObjectProperties(o *Object) *Object {
o.Replies = IRI(fmt.Sprintf("%s/replies", o.GetLink()))
}
}
o.AttributedTo = FlattenToIRI(o.AttributedTo)
o.AttributedTo = Flatten(o.AttributedTo)
o.To = FlattenItemCollection(o.To)
o.Bto = FlattenItemCollection(o.Bto)
o.CC = FlattenItemCollection(o.CC)