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 +}  | 
