PostInbox auto Follow/Reject uses IRI only

Part of normalization of IRIs.
このコミットが含まれているのは:
Cory Slep 2018-06-06 22:53:18 +02:00
コミット 3d310d5e81
2個のファイルの変更15行の追加6行の削除

ファイルの表示

@ -929,7 +929,6 @@ func (f *federator) handleDelete(c context.Context) func(s *streams.Delete) erro
} }
} }
// TODO: Only Set IRIs
func (f *federator) handleFollow(c context.Context, inboxURL *url.URL) func(s *streams.Follow) error { func (f *federator) handleFollow(c context.Context, inboxURL *url.URL) func(s *streams.Follow) error {
return func(s *streams.Follow) error { return func(s *streams.Follow) error {
// Permit either human-triggered or automatically triggering // Permit either human-triggered or automatically triggering
@ -948,13 +947,23 @@ func (f *federator) handleFollow(c context.Context, inboxURL *url.URL) func(s *s
raw := s.Raw() raw := s.Raw()
activity.AppendObject(raw) activity.AppendObject(raw)
for i := 0; i < raw.ActorLen(); i++ { for i := 0; i < raw.ActorLen(); i++ {
var to *url.URL
if raw.IsActorObject(i) { if raw.IsActorObject(i) {
activity.AppendToObject(raw.GetActorObject(i)) obj := raw.GetActorObject(i)
} else if raw.IsActorLink(i) { if !obj.HasId() {
activity.AppendToLink(raw.GetActorLink(i)) return fmt.Errorf("to object missing id")
} else if raw.IsActorIRI(i) {
activity.AppendToIRI(raw.GetActorIRI(i))
} }
to = obj.GetId()
} else if raw.IsActorLink(i) {
href := raw.GetActorLink(i)
if !href.HasHref() {
return fmt.Errorf("to link missing href")
}
to = href.GetHref()
} else if raw.IsActorIRI(i) {
to = raw.GetActorIRI(i)
}
activity.AppendToIRI(to)
} }
ownsAny := false ownsAny := false
if todo == AutomaticAccept { if todo == AutomaticAccept {

ファイルの表示

@ -2556,7 +2556,7 @@ func TestPostInbox_Follow_AutoReject(t *testing.T) {
} }
expected := &vocab.Reject{} expected := &vocab.Reject{}
expected.AppendObject(testFollow) expected.AppendObject(testFollow)
expected.AppendToObject(sallyActor) expected.AppendToIRI(sallyIRI)
handled, err := p.PostInbox(context.Background(), resp, req) handled, err := p.PostInbox(context.Background(), resp, req)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -2683,7 +2683,7 @@ func TestPostInbox_Follow_AutoAccept(t *testing.T) {
} }
expected := &vocab.Accept{} expected := &vocab.Accept{}
expected.AppendObject(testFollow) expected.AppendObject(testFollow)
expected.AppendToObject(sallyActor) expected.AppendToIRI(sallyIRI)
expectedFollowers := &vocab.Collection{} expectedFollowers := &vocab.Collection{}
expectedFollowers.AppendItemsIRI(sallyIRI) expectedFollowers.AppendItemsIRI(sallyIRI)
expectedActor := &vocab.Person{} expectedActor := &vocab.Person{}