summaryrefslogtreecommitdiff
path: root/internal/message
diff options
context:
space:
mode:
authorLibravatar tsmethurst <tobi.smethurst@klarrio.com>2021-05-28 22:47:18 +0200
committerLibravatar tsmethurst <tobi.smethurst@klarrio.com>2021-05-28 22:47:18 +0200
commitcb54324430e7c4640a7aa5aac24932b5e91b71c4 (patch)
treea5193ee09656d808f589de20f77a5a455a5a6683 /internal/message
parentAnnounce/boost (#35) (diff)
downloadgotosocial-cb54324430e7c4640a7aa5aac24932b5e91b71c4.tar.xz
federate account updates
Diffstat (limited to 'internal/message')
-rw-r--r--internal/message/accountprocess.go7
-rw-r--r--internal/message/fromclientapiprocess.go32
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
+}