diff options
Diffstat (limited to 'internal/message/fromclientapiprocess.go')
-rw-r--r-- | internal/message/fromclientapiprocess.go | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/internal/message/fromclientapiprocess.go b/internal/message/fromclientapiprocess.go index b0112152b..12e4bd3c0 100644 --- a/internal/message/fromclientapiprocess.go +++ b/internal/message/fromclientapiprocess.go @@ -49,17 +49,17 @@ func (p *processor) processFromClientAPI(clientMsg gtsmodel.FromClientAPI) error } return nil case gtsmodel.ActivityStreamsFollow: - // CREATE FOLLOW (request) - follow, ok := clientMsg.GTSModel.(*gtsmodel.Follow) + // CREATE FOLLOW REQUEST + followRequest, ok := clientMsg.GTSModel.(*gtsmodel.FollowRequest) if !ok { - return errors.New("follow was not parseable as *gtsmodel.Follow") + return errors.New("followrequest was not parseable as *gtsmodel.FollowRequest") } - if err := p.notifyFollow(follow); err != nil { + if err := p.notifyFollowRequest(followRequest, clientMsg.TargetAccount); err != nil { return err } - return p.federateFollow(follow, clientMsg.OriginAccount, clientMsg.TargetAccount) + return p.federateFollow(followRequest, clientMsg.OriginAccount, clientMsg.TargetAccount) case gtsmodel.ActivityStreamsLike: // CREATE LIKE/FAVE fave, ok := clientMsg.GTSModel.(*gtsmodel.StatusFave) @@ -67,7 +67,7 @@ func (p *processor) processFromClientAPI(clientMsg gtsmodel.FromClientAPI) error return errors.New("fave was not parseable as *gtsmodel.StatusFave") } - if err := p.notifyFave(fave); err != nil { + if err := p.notifyFave(fave, clientMsg.TargetAccount); err != nil { return err } @@ -84,6 +84,11 @@ func (p *processor) processFromClientAPI(clientMsg gtsmodel.FromClientAPI) error if !ok { return errors.New("accept was not parseable as *gtsmodel.Follow") } + + if err := p.notifyFollow(follow, clientMsg.TargetAccount); err != nil { + return err + } + return p.federateAcceptFollowRequest(follow, clientMsg.OriginAccount, clientMsg.TargetAccount) } case gtsmodel.ActivityStreamsUndo: @@ -107,21 +112,23 @@ func (p *processor) federateStatus(status *gtsmodel.Status) error { return fmt.Errorf("federateStatus: error converting status to as format: %s", err) } - outboxIRI, err := url.Parse(status.GTSAccount.OutboxURI) + outboxIRI, err := url.Parse(status.GTSAuthorAccount.OutboxURI) if err != nil { - return fmt.Errorf("federateStatus: error parsing outboxURI %s: %s", status.GTSAccount.OutboxURI, err) + return fmt.Errorf("federateStatus: error parsing outboxURI %s: %s", status.GTSAuthorAccount.OutboxURI, err) } _, err = p.federator.FederatingActor().Send(context.Background(), outboxIRI, asStatus) return err } -func (p *processor) federateFollow(follow *gtsmodel.Follow, originAccount *gtsmodel.Account, targetAccount *gtsmodel.Account) error { +func (p *processor) federateFollow(followRequest *gtsmodel.FollowRequest, originAccount *gtsmodel.Account, targetAccount *gtsmodel.Account) error { // if both accounts are local there's nothing to do here if originAccount.Domain == "" && targetAccount.Domain == "" { return nil } + follow := p.tc.FollowRequestToFollow(followRequest) + asFollow, err := p.tc.FollowToAS(follow, originAccount, targetAccount) if err != nil { return fmt.Errorf("federateFollow: error converting follow to as format: %s", err) |