diff options
Diffstat (limited to 'internal/federation')
| -rw-r--r-- | internal/federation/dereference.go | 8 | ||||
| -rw-r--r-- | internal/federation/dereferencing/announce.go | 2 | ||||
| -rw-r--r-- | internal/federation/dereferencing/dereferencer.go | 4 | ||||
| -rw-r--r-- | internal/federation/dereferencing/status.go | 28 | ||||
| -rw-r--r-- | internal/federation/dereferencing/status_test.go | 4 | ||||
| -rw-r--r-- | internal/federation/dereferencing/thread.go | 6 | ||||
| -rw-r--r-- | internal/federation/federator.go | 4 | 
7 files changed, 27 insertions, 29 deletions
diff --git a/internal/federation/dereference.go b/internal/federation/dereference.go index a9dbabb42..217009177 100644 --- a/internal/federation/dereference.go +++ b/internal/federation/dereference.go @@ -34,12 +34,12 @@ func (f *federator) EnrichRemoteAccount(ctx context.Context, username string, ac  	return f.dereferencer.EnrichRemoteAccount(ctx, username, account)  } -func (f *federator) GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent, includeChilds bool) (*gtsmodel.Status, ap.Statusable, bool, error) { -	return f.dereferencer.GetRemoteStatus(ctx, username, remoteStatusID, refresh, includeParent, includeChilds) +func (f *federator) GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent bool) (*gtsmodel.Status, ap.Statusable, bool, error) { +	return f.dereferencer.GetRemoteStatus(ctx, username, remoteStatusID, refresh, includeParent)  } -func (f *federator) EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent, includeChilds bool) (*gtsmodel.Status, error) { -	return f.dereferencer.EnrichRemoteStatus(ctx, username, status, includeParent, includeChilds) +func (f *federator) EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent bool) (*gtsmodel.Status, error) { +	return f.dereferencer.EnrichRemoteStatus(ctx, username, status, includeParent)  }  func (f *federator) DereferenceRemoteThread(ctx context.Context, username string, statusIRI *url.URL) error { diff --git a/internal/federation/dereferencing/announce.go b/internal/federation/dereferencing/announce.go index f0b4c9e9a..edab8c6ca 100644 --- a/internal/federation/dereferencing/announce.go +++ b/internal/federation/dereferencing/announce.go @@ -46,7 +46,7 @@ func (d *deref) DereferenceAnnounce(ctx context.Context, announce *gtsmodel.Stat  		return fmt.Errorf("DereferenceAnnounce: error dereferencing thread of boosted status: %s", err)  	} -	boostedStatus, _, _, err := d.GetRemoteStatus(ctx, requestingUsername, boostedStatusURI, false, false, false) +	boostedStatus, _, _, err := d.GetRemoteStatus(ctx, requestingUsername, boostedStatusURI, false, true)  	if err != nil {  		return fmt.Errorf("DereferenceAnnounce: error dereferencing remote status with id %s: %s", announce.BoostOf.URI, err)  	} diff --git a/internal/federation/dereferencing/dereferencer.go b/internal/federation/dereferencing/dereferencer.go index f19ce59a7..ea347b30e 100644 --- a/internal/federation/dereferencing/dereferencer.go +++ b/internal/federation/dereferencing/dereferencer.go @@ -38,8 +38,8 @@ type Dereferencer interface {  	GetRemoteAccount(ctx context.Context, username string, remoteAccountID *url.URL, refresh bool) (*gtsmodel.Account, bool, error)  	EnrichRemoteAccount(ctx context.Context, username string, account *gtsmodel.Account) (*gtsmodel.Account, error) -	GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent, includeChilds bool) (*gtsmodel.Status, ap.Statusable, bool, error) -	EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent, includeChilds bool) (*gtsmodel.Status, error) +	GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent bool) (*gtsmodel.Status, ap.Statusable, bool, error) +	EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent bool) (*gtsmodel.Status, error)  	GetRemoteInstance(ctx context.Context, username string, remoteInstanceURI *url.URL) (*gtsmodel.Instance, error) diff --git a/internal/federation/dereferencing/status.go b/internal/federation/dereferencing/status.go index 1c9742797..edf1f0e41 100644 --- a/internal/federation/dereferencing/status.go +++ b/internal/federation/dereferencing/status.go @@ -39,8 +39,8 @@ import (  //  // EnrichRemoteStatus is mostly useful for calling after a status has been initially created by  // the federatingDB's Create function, but additional dereferencing is needed on it. -func (d *deref) EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent, includeChilds bool) (*gtsmodel.Status, error) { -	if err := d.populateStatusFields(ctx, status, username, includeParent, includeChilds); err != nil { +func (d *deref) EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent bool) (*gtsmodel.Status, error) { +	if err := d.populateStatusFields(ctx, status, username, includeParent); err != nil {  		return nil, err  	} @@ -62,7 +62,7 @@ func (d *deref) EnrichRemoteStatus(ctx context.Context, username string, status  // If a dereference was performed, then the function also returns the ap.Statusable representation for further processing.  //  // SIDE EFFECTS: remote status will be stored in the database, and the remote status owner will also be stored. -func (d *deref) GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent, includeChilds bool) (*gtsmodel.Status, ap.Statusable, bool, error) { +func (d *deref) GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent bool) (*gtsmodel.Status, ap.Statusable, bool, error) {  	new := true  	// check if we already have the status in our db @@ -105,7 +105,7 @@ func (d *deref) GetRemoteStatus(ctx context.Context, username string, remoteStat  		}  		gtsStatus.ID = ulid -		if err := d.populateStatusFields(ctx, gtsStatus, username, includeParent, includeChilds); err != nil { +		if err := d.populateStatusFields(ctx, gtsStatus, username, includeParent); err != nil {  			return nil, statusable, new, fmt.Errorf("GetRemoteStatus: error populating status fields: %s", err)  		} @@ -115,7 +115,7 @@ func (d *deref) GetRemoteStatus(ctx context.Context, username string, remoteStat  	} else {  		gtsStatus.ID = maybeStatus.ID -		if err := d.populateStatusFields(ctx, gtsStatus, username, includeParent, includeChilds); err != nil { +		if err := d.populateStatusFields(ctx, gtsStatus, username, includeParent); err != nil {  			return nil, statusable, new, fmt.Errorf("GetRemoteStatus: error populating status fields: %s", err)  		} @@ -235,7 +235,7 @@ func (d *deref) dereferenceStatusable(ctx context.Context, username string, remo  // This function will deference all of the above, insert them in the database as necessary,  // and attach them to the status. The status itself will not be added to the database yet,  // that's up the caller to do. -func (d *deref) populateStatusFields(ctx context.Context, status *gtsmodel.Status, requestingUsername string, includeParent, includeChilds bool) error { +func (d *deref) populateStatusFields(ctx context.Context, status *gtsmodel.Status, requestingUsername string, includeParent bool) error {  	l := d.log.WithFields(logrus.Fields{  		"func":   "dereferenceStatusFields",  		"status": fmt.Sprintf("%+v", status), @@ -275,12 +275,10 @@ func (d *deref) populateStatusFields(ctx context.Context, status *gtsmodel.Statu  	// 3. Emojis  	// TODO -	// 4. Mentions (only if requested) +	// 4. Mentions  	// TODO: do we need to handle removing empty mention objects and just using mention IDs slice? -	if includeChilds { -		if err := d.populateStatusMentions(ctx, status, requestingUsername); err != nil { -			return fmt.Errorf("populateStatusFields: error populating status mentions: %s", err) -		} +	if err := d.populateStatusMentions(ctx, status, requestingUsername); err != nil { +		return fmt.Errorf("populateStatusFields: error populating status mentions: %s", err)  	}  	// 5. Replied-to-status (only if requested) @@ -325,10 +323,10 @@ func (d *deref) populateStatusMentions(ctx context.Context, status *gtsmodel.Sta  		errs := []string{}  		// check if account is in the db already -		if a, err := d.db.GetAccountByURL(ctx, targetAccountURI.String()); err != nil { +		if a, err := d.db.GetAccountByURI(ctx, targetAccountURI.String()); err != nil {  			errs = append(errs, err.Error())  		} else { -			l.Debugf("populateStatusMentions: got target account %s with id %s through GetAccountByURL", targetAccountURI, a.ID) +			l.Debugf("populateStatusMentions: got target account %s with id %s through GetAccountByURI", targetAccountURI, a.ID)  			targetAccount = a  		} @@ -359,7 +357,7 @@ func (d *deref) populateStatusMentions(ctx context.Context, status *gtsmodel.Sta  			Status:           m.Status,  			CreatedAt:        status.CreatedAt,  			UpdatedAt:        status.UpdatedAt, -			OriginAccountID:  status.Account.ID, +			OriginAccountID:  status.AccountID,  			OriginAccountURI: status.AccountURI,  			OriginAccount:    status.Account,  			TargetAccountID:  targetAccount.ID, @@ -426,7 +424,7 @@ func (d *deref) populateStatusRepliedTo(ctx context.Context, status *gtsmodel.St  		replyToStatus, err := d.db.GetStatusByURI(ctx, status.InReplyToURI)  		if err != nil {  			// Status was not in the DB, try fetch -			replyToStatus, _, _, err = d.GetRemoteStatus(ctx, requestingUsername, statusURI, false, false, false) +			replyToStatus, _, _, err = d.GetRemoteStatus(ctx, requestingUsername, statusURI, false, false)  			if err != nil {  				return fmt.Errorf("populateStatusRepliedTo: couldn't get reply to status with uri %s: %s", status.InReplyToURI, err)  			} diff --git a/internal/federation/dereferencing/status_test.go b/internal/federation/dereferencing/status_test.go index 636870232..442ea55c3 100644 --- a/internal/federation/dereferencing/status_test.go +++ b/internal/federation/dereferencing/status_test.go @@ -38,7 +38,7 @@ func (suite *StatusTestSuite) TestDereferenceSimpleStatus() {  	fetchingAccount := suite.testAccounts["local_account_1"]  	statusURL := testrig.URLMustParse("https://unknown-instance.com/users/brand_new_person/statuses/01FE4NTHKWW7THT67EF10EB839") -	status, statusable, new, err := suite.dereferencer.GetRemoteStatus(context.Background(), fetchingAccount.Username, statusURL, false, false, false) +	status, statusable, new, err := suite.dereferencer.GetRemoteStatus(context.Background(), fetchingAccount.Username, statusURL, false, false)  	suite.NoError(err)  	suite.NotNil(status)  	suite.NotNil(statusable) @@ -80,7 +80,7 @@ func (suite *StatusTestSuite) TestDereferenceStatusWithMention() {  	fetchingAccount := suite.testAccounts["local_account_1"]  	statusURL := testrig.URLMustParse("https://unknown-instance.com/users/brand_new_person/statuses/01FE5Y30E3W4P7TRE0R98KAYQV") -	status, statusable, new, err := suite.dereferencer.GetRemoteStatus(context.Background(), fetchingAccount.Username, statusURL, false, false, true) +	status, statusable, new, err := suite.dereferencer.GetRemoteStatus(context.Background(), fetchingAccount.Username, statusURL, false, false)  	suite.NoError(err)  	suite.NotNil(status)  	suite.NotNil(statusable) diff --git a/internal/federation/dereferencing/thread.go b/internal/federation/dereferencing/thread.go index af16c01b2..87cc42918 100644 --- a/internal/federation/dereferencing/thread.go +++ b/internal/federation/dereferencing/thread.go @@ -49,7 +49,7 @@ func (d *deref) DereferenceThread(ctx context.Context, username string, statusIR  	}  	// first make sure we have this status in our db -	_, statusable, _, err := d.GetRemoteStatus(ctx, username, statusIRI, true, false, false) +	_, statusable, _, err := d.GetRemoteStatus(ctx, username, statusIRI, true, false)  	if err != nil {  		return fmt.Errorf("DereferenceThread: error getting status with id %s: %s", statusIRI.String(), err)  	} @@ -104,7 +104,7 @@ func (d *deref) iterateAncestors(ctx context.Context, username string, statusIRI  	// If we reach here, we're looking at a remote status -- make sure we have it in our db by calling GetRemoteStatus  	// We call it with refresh to true because we want the statusable representation to parse inReplyTo from. -	_, statusable, _, err := d.GetRemoteStatus(ctx, username, &statusIRI, true, false, false) +	_, statusable, _, err := d.GetRemoteStatus(ctx, username, &statusIRI, true, false)  	if err != nil {  		l.Debugf("error getting remote status: %s", err)  		return nil @@ -214,7 +214,7 @@ pageLoop:  			foundReplies = foundReplies + 1  			// get the remote statusable and put it in the db -			_, statusable, new, err := d.GetRemoteStatus(ctx, username, itemURI, false, false, false) +			_, statusable, new, err := d.GetRemoteStatus(ctx, username, itemURI, false, false)  			if new && err == nil && statusable != nil {  				// now iterate descendants of *that* status  				if err := d.iterateDescendants(ctx, username, *itemURI, statusable); err != nil { diff --git a/internal/federation/federator.go b/internal/federation/federator.go index aecddf017..a385c4504 100644 --- a/internal/federation/federator.go +++ b/internal/federation/federator.go @@ -62,8 +62,8 @@ type Federator interface {  	GetRemoteAccount(ctx context.Context, username string, remoteAccountID *url.URL, refresh bool) (*gtsmodel.Account, bool, error)  	EnrichRemoteAccount(ctx context.Context, username string, account *gtsmodel.Account) (*gtsmodel.Account, error) -	GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent, includeChilds bool) (*gtsmodel.Status, ap.Statusable, bool, error) -	EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent, includeChilds bool) (*gtsmodel.Status, error) +	GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refresh, includeParent bool) (*gtsmodel.Status, ap.Statusable, bool, error) +	EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent bool) (*gtsmodel.Status, error)  	GetRemoteInstance(ctx context.Context, username string, remoteInstanceURI *url.URL) (*gtsmodel.Instance, error)  | 
