diff options
| author | 2023-02-03 20:03:05 +0000 | |
|---|---|---|
| committer | 2023-02-03 20:03:05 +0000 | |
| commit | 33aee1b1e974e99182a95ce1a05e2be924d19bb2 (patch) | |
| tree | 1471623039f70325a0b7a1c25dd4fe3afc883970 /internal/processing/federation | |
| parent | [feature/frogend] (Mastodon) domain block CSV import (#1390) (diff) | |
| download | gotosocial-33aee1b1e974e99182a95ce1a05e2be924d19bb2.tar.xz | |
[chore] reformat GetAccount() functionality, support updating accounts based on last_fetch (#1411)
* reformat GetAccount() functionality, and add UpdateAccount() function.
* use fetched_at instead of last_webfingered_at
* catch local "not found" errors. small formatting / error string changes
* remove now unused error type
* return nil when wrapping nil error
* update expected error messages
* return correct url for foss satan webfinger
* add AP model for Some_User
* normalize local domain
* return notretrievable where appropriate
* expose NewErrNotRetrievable
* ensure webfinger for new accounts searched by uri
* update local account short circuit
* allow enrich to fail for already-known accounts
* remove unused LastWebfingeredAt
* expose test maps on mock http client
* update Update test
* reformat GetAccount() functionality, and add UpdateAccount() function.
* use fetched_at instead of last_webfingered_at
* catch local "not found" errors. small formatting / error string changes
* remove nil error checks (we shouldn't be passing nil errors to newError() initializers)
* remove mutex unlock on transport init fail (it hasn't yet been locked!)
* woops add back the error wrapping to use ErrNotRetrievable
* caches were never being started... :see_no_evil:
---------
Signed-off-by: kim <grufwub@gmail.com>
Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
Diffstat (limited to 'internal/processing/federation')
| -rw-r--r-- | internal/processing/federation/getfollowers.go | 8 | ||||
| -rw-r--r-- | internal/processing/federation/getfollowing.go | 8 | ||||
| -rw-r--r-- | internal/processing/federation/getoutbox.go | 8 | ||||
| -rw-r--r-- | internal/processing/federation/getstatus.go | 8 | ||||
| -rw-r--r-- | internal/processing/federation/getstatusreplies.go | 8 | ||||
| -rw-r--r-- | internal/processing/federation/getuser.go | 13 | 
6 files changed, 21 insertions, 32 deletions
| diff --git a/internal/processing/federation/getfollowers.go b/internal/processing/federation/getfollowers.go index ceed3f2d5..991954389 100644 --- a/internal/processing/federation/getfollowers.go +++ b/internal/processing/federation/getfollowers.go @@ -24,7 +24,6 @@ import (  	"net/url"  	"github.com/superseriousbusiness/activity/streams" -	"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/transport"  ) @@ -42,10 +41,9 @@ func (p *processor) GetFollowers(ctx context.Context, requestedUsername string,  		return nil, errWithCode  	} -	requestingAccount, err := p.federator.GetAccount(transport.WithFastfail(ctx), dereferencing.GetAccountParams{ -		RequestingUsername: requestedUsername, -		RemoteAccountID:    requestingAccountURI, -	}) +	requestingAccount, err := p.federator.GetAccountByURI( +		transport.WithFastfail(ctx), requestedUsername, requestingAccountURI, false, +	)  	if err != nil {  		return nil, gtserror.NewErrorUnauthorized(err)  	} diff --git a/internal/processing/federation/getfollowing.go b/internal/processing/federation/getfollowing.go index 20ffae849..06acdad32 100644 --- a/internal/processing/federation/getfollowing.go +++ b/internal/processing/federation/getfollowing.go @@ -24,7 +24,6 @@ import (  	"net/url"  	"github.com/superseriousbusiness/activity/streams" -	"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/transport"  ) @@ -42,10 +41,9 @@ func (p *processor) GetFollowing(ctx context.Context, requestedUsername string,  		return nil, errWithCode  	} -	requestingAccount, err := p.federator.GetAccount(transport.WithFastfail(ctx), dereferencing.GetAccountParams{ -		RequestingUsername: requestedUsername, -		RemoteAccountID:    requestingAccountURI, -	}) +	requestingAccount, err := p.federator.GetAccountByURI( +		transport.WithFastfail(ctx), requestedUsername, requestingAccountURI, false, +	)  	if err != nil {  		return nil, gtserror.NewErrorUnauthorized(err)  	} diff --git a/internal/processing/federation/getoutbox.go b/internal/processing/federation/getoutbox.go index 186967c2c..6d0f2f3fe 100644 --- a/internal/processing/federation/getoutbox.go +++ b/internal/processing/federation/getoutbox.go @@ -25,7 +25,6 @@ import (  	"github.com/superseriousbusiness/activity/streams"  	"github.com/superseriousbusiness/gotosocial/internal/db" -	"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/transport"  ) @@ -43,10 +42,9 @@ func (p *processor) GetOutbox(ctx context.Context, requestedUsername string, pag  		return nil, errWithCode  	} -	requestingAccount, err := p.federator.GetAccount(transport.WithFastfail(ctx), dereferencing.GetAccountParams{ -		RequestingUsername: requestedUsername, -		RemoteAccountID:    requestingAccountURI, -	}) +	requestingAccount, err := p.federator.GetAccountByURI( +		transport.WithFastfail(ctx), requestedUsername, requestingAccountURI, false, +	)  	if err != nil {  		return nil, gtserror.NewErrorUnauthorized(err)  	} diff --git a/internal/processing/federation/getstatus.go b/internal/processing/federation/getstatus.go index 08646ceda..b54e17b11 100644 --- a/internal/processing/federation/getstatus.go +++ b/internal/processing/federation/getstatus.go @@ -24,7 +24,6 @@ import (  	"net/url"  	"github.com/superseriousbusiness/activity/streams" -	"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/transport"  ) @@ -42,10 +41,9 @@ func (p *processor) GetStatus(ctx context.Context, requestedUsername string, req  		return nil, errWithCode  	} -	requestingAccount, err := p.federator.GetAccount(transport.WithFastfail(ctx), dereferencing.GetAccountParams{ -		RequestingUsername: requestedUsername, -		RemoteAccountID:    requestingAccountURI, -	}) +	requestingAccount, err := p.federator.GetAccountByURI( +		transport.WithFastfail(ctx), requestedUsername, requestingAccountURI, false, +	)  	if err != nil {  		return nil, gtserror.NewErrorUnauthorized(err)  	} diff --git a/internal/processing/federation/getstatusreplies.go b/internal/processing/federation/getstatusreplies.go index 0b6d22575..08c9b1119 100644 --- a/internal/processing/federation/getstatusreplies.go +++ b/internal/processing/federation/getstatusreplies.go @@ -25,7 +25,6 @@ import (  	"github.com/superseriousbusiness/activity/streams"  	"github.com/superseriousbusiness/gotosocial/internal/db" -	"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"  	"github.com/superseriousbusiness/gotosocial/internal/transport" @@ -44,10 +43,9 @@ func (p *processor) GetStatusReplies(ctx context.Context, requestedUsername stri  		return nil, errWithCode  	} -	requestingAccount, err := p.federator.GetAccount(transport.WithFastfail(ctx), dereferencing.GetAccountParams{ -		RequestingUsername: requestedUsername, -		RemoteAccountID:    requestingAccountURI, -	}) +	requestingAccount, err := p.federator.GetAccountByURI( +		transport.WithFastfail(ctx), requestedUsername, requestingAccountURI, false, +	)  	if err != nil {  		return nil, gtserror.NewErrorUnauthorized(err)  	} diff --git a/internal/processing/federation/getuser.go b/internal/processing/federation/getuser.go index 97f452aa3..d3fb7bdf6 100644 --- a/internal/processing/federation/getuser.go +++ b/internal/processing/federation/getuser.go @@ -25,20 +25,20 @@ import (  	"github.com/superseriousbusiness/activity/streams"  	"github.com/superseriousbusiness/activity/streams/vocab" -	"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/transport"  	"github.com/superseriousbusiness/gotosocial/internal/uris"  )  func (p *processor) GetUser(ctx context.Context, requestedUsername string, requestURL *url.URL) (interface{}, gtserror.WithCode) { -	// get the account the request is referring to +	// Get the instance-local account the request is referring to.  	requestedAccount, err := p.db.GetAccountByUsernameDomain(ctx, requestedUsername, "")  	if err != nil {  		return nil, gtserror.NewErrorNotFound(fmt.Errorf("database error getting account with username %s: %s", requestedUsername, err))  	}  	var requestedPerson vocab.ActivityStreamsPerson +  	if uris.IsPublicKeyPath(requestURL) {  		// if it's a public key path, we don't need to authenticate but we'll only serve the bare minimum user profile needed for the public key  		requestedPerson, err = p.tc.AccountToASMinimal(ctx, requestedAccount) @@ -53,11 +53,10 @@ func (p *processor) GetUser(ctx context.Context, requestedUsername string, reque  		}  		// if we're not already handshaking/dereferencing a remote account, dereference it now -		if !p.federator.Handshaking(ctx, requestedUsername, requestingAccountURI) { -			requestingAccount, err := p.federator.GetAccount(transport.WithFastfail(ctx), dereferencing.GetAccountParams{ -				RequestingUsername: requestedUsername, -				RemoteAccountID:    requestingAccountURI, -			}) +		if !p.federator.Handshaking(requestedUsername, requestingAccountURI) { +			requestingAccount, err := p.federator.GetAccountByURI( +				transport.WithFastfail(ctx), requestedUsername, requestingAccountURI, false, +			)  			if err != nil {  				return nil, gtserror.NewErrorUnauthorized(err)  			} | 
