diff options
author | 2021-05-28 22:47:18 +0200 | |
---|---|---|
committer | 2021-05-28 22:47:18 +0200 | |
commit | cb54324430e7c4640a7aa5aac24932b5e91b71c4 (patch) | |
tree | a5193ee09656d808f589de20f77a5a455a5a6683 /internal/message | |
parent | Announce/boost (#35) (diff) | |
download | gotosocial-cb54324430e7c4640a7aa5aac24932b5e91b71c4.tar.xz |
federate account updates
Diffstat (limited to 'internal/message')
-rw-r--r-- | internal/message/accountprocess.go | 7 | ||||
-rw-r--r-- | internal/message/fromclientapiprocess.go | 32 |
2 files changed, 38 insertions, 1 deletions
diff --git a/internal/message/accountprocess.go b/internal/message/accountprocess.go index 8847e5789..ea03ab0ff 100644 --- a/internal/message/accountprocess.go +++ b/internal/message/accountprocess.go @@ -188,6 +188,13 @@ func (p *processor) AccountUpdate(authed *oauth.Auth, form *apimodel.UpdateCrede return nil, fmt.Errorf("could not fetch updated account %s: %s", authed.Account.ID, err) } + p.fromClientAPI <- gtsmodel.FromClientAPI{ + APObjectType: gtsmodel.ActivityStreamsProfile, + APActivityType: gtsmodel.ActivityStreamsUpdate, + GTSModel: updatedAccount, + OriginAccount: updatedAccount, + } + acctSensitive, err := p.tc.AccountToMastoSensitive(updatedAccount) if err != nil { return nil, fmt.Errorf("could not convert account into mastosensitive account: %s", err) diff --git a/internal/message/fromclientapiprocess.go b/internal/message/fromclientapiprocess.go index 1d30b526c..40a2981a8 100644 --- a/internal/message/fromclientapiprocess.go +++ b/internal/message/fromclientapiprocess.go @@ -88,6 +88,16 @@ func (p *processor) processFromClientAPI(clientMsg gtsmodel.FromClientAPI) error } case gtsmodel.ActivityStreamsUpdate: // UPDATE + switch clientMsg.APObjectType { + case gtsmodel.ActivityStreamsProfile, gtsmodel.ActivityStreamsPerson: + // UPDATE ACCOUNT/PROFILE + account, ok := clientMsg.GTSModel.(*gtsmodel.Account) + if !ok { + return errors.New("account was not parseable as *gtsmodel.Account") + } + + return p.federateAccountUpdate(account, clientMsg.OriginAccount) + } case gtsmodel.ActivityStreamsAccept: // ACCEPT switch clientMsg.APObjectType { @@ -277,7 +287,27 @@ func (p *processor) federateAnnounce(boostWrapperStatus *gtsmodel.Status, boosti if err != nil { return fmt.Errorf("federateAnnounce: error parsing outboxURI %s: %s", boostingAccount.OutboxURI, err) } - + _, err = p.federator.FederatingActor().Send(context.Background(), outboxIRI, announce) return err } + +func (p *processor) federateAccountUpdate(updatedAccount *gtsmodel.Account, originAccount *gtsmodel.Account) error { + person, err := p.tc.AccountToAS(updatedAccount) + if err != nil { + return fmt.Errorf("federateAccountUpdate: error converting account to person: %s", err) + } + + update, err := p.tc.WrapPersonInUpdate(person, originAccount) + if err != nil { + return fmt.Errorf("federateAccountUpdate: error wrapping person in update: %s", err) + } + + outboxIRI, err := url.Parse(originAccount.OutboxURI) + if err != nil { + return fmt.Errorf("federateAnnounce: error parsing outboxURI %s: %s", originAccount.OutboxURI, err) + } + + _, err = p.federator.FederatingActor().Send(context.Background(), outboxIRI, update) + return err +} |