PostOutbox Create actor & attributedTo uses IRIs
Part of normalizing IRIs and preventing overly embedding objects.
このコミットが含まれているのは:
コミット
a1fc177bc7
37
pub/fed.go
37
pub/fed.go
|
@ -400,7 +400,6 @@ func (f *federator) getPostOutboxResolver(c context.Context, rawJson map[string]
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: Only Set IRIs
|
||||
func (f *federator) handleClientCreate(ctx context.Context, deliverable *bool, toAddToOutbox *map[string]interface{}) func(s *streams.Create) error {
|
||||
return func(s *streams.Create) error {
|
||||
*deliverable = true
|
||||
|
@ -457,26 +456,42 @@ func (f *federator) handleClientCreate(ctx context.Context, deliverable *bool, t
|
|||
for k, v := range createActorIds {
|
||||
for i, attributedToMap := range objectAttributedToIds {
|
||||
if _, ok := attributedToMap[k]; !ok {
|
||||
var iri *url.URL
|
||||
if vObj, ok := v.(vocab.ObjectType); ok {
|
||||
obj[i].AppendAttributedToObject(vObj)
|
||||
} else if vLink, ok := v.(vocab.LinkType); ok {
|
||||
obj[i].AppendAttributedToLink(vLink)
|
||||
} else if vIRI, ok := v.(*url.URL); ok {
|
||||
obj[i].AppendAttributedToIRI(vIRI)
|
||||
if !vObj.HasId() {
|
||||
return fmt.Errorf("create actor object missing id")
|
||||
}
|
||||
iri = vObj.GetId()
|
||||
} else if vLink, ok := v.(vocab.LinkType); ok {
|
||||
if !vLink.HasHref() {
|
||||
return fmt.Errorf("create actor link missing href")
|
||||
}
|
||||
iri = vLink.GetHref()
|
||||
} else if vIRI, ok := v.(*url.URL); ok {
|
||||
iri = vIRI
|
||||
}
|
||||
obj[i].AppendAttributedToIRI(iri)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, attributedToMap := range objectAttributedToIds {
|
||||
for k, v := range attributedToMap {
|
||||
if _, ok := createActorIds[k]; !ok {
|
||||
var iri *url.URL
|
||||
if vObj, ok := v.(vocab.ObjectType); ok {
|
||||
c.AppendActorObject(vObj)
|
||||
} else if vLink, ok := v.(vocab.LinkType); ok {
|
||||
c.AppendActorLink(vLink)
|
||||
} else if vIRI, ok := v.(*url.URL); ok {
|
||||
c.AppendActorIRI(vIRI)
|
||||
if !vObj.HasId() {
|
||||
return fmt.Errorf("attributedTo object missing id")
|
||||
}
|
||||
iri = vObj.GetId()
|
||||
} else if vLink, ok := v.(vocab.LinkType); ok {
|
||||
if !vLink.HasHref() {
|
||||
return fmt.Errorf("attributedTo link missing href")
|
||||
}
|
||||
iri = vLink.GetHref()
|
||||
} else if vIRI, ok := v.(*url.URL); ok {
|
||||
iri = vIRI
|
||||
}
|
||||
c.AppendActorIRI(iri)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -267,7 +267,7 @@ func init() {
|
|||
testClientExpectedNote.SetId(testNewIRI2)
|
||||
testClientExpectedNote.AppendNameString(noteName)
|
||||
testClientExpectedNote.AppendContentString("This is a simple note")
|
||||
testClientExpectedNote.AppendAttributedToObject(sallyActor)
|
||||
testClientExpectedNote.AppendAttributedToIRI(sallyIRI)
|
||||
testClientExpectedNote.AppendToIRI(samIRI)
|
||||
testClientExpectedCreateNote = &vocab.Create{}
|
||||
testClientExpectedCreateNote.SetId(testNewIRI)
|
||||
|
|
読み込み中…
新しいイシューから参照