mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-02-11 02:27:07 +01:00
totally break GetRemoteAccount
This commit is contained in:
parent
95b6c1b866
commit
6a9b6afdf3
4 changed files with 39 additions and 9 deletions
|
@ -23,11 +23,12 @@
|
|||
"net/url"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/ap"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
)
|
||||
|
||||
func (f *federator) GetRemoteAccount(ctx context.Context, username string, remoteAccountID *url.URL, blocking bool, refresh bool) (*gtsmodel.Account, error) {
|
||||
return f.dereferencer.GetRemoteAccount(ctx, username, remoteAccountID, blocking, refresh)
|
||||
func (f *federator) GetRemoteAccount(ctx context.Context, params dereferencing.GetRemoteAccountParams) (*gtsmodel.Account, error) {
|
||||
return f.dereferencer.GetRemoteAccount(ctx, params)
|
||||
}
|
||||
|
||||
func (f *federator) GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refetch, includeParent bool) (*gtsmodel.Status, ap.Statusable, error) {
|
||||
|
|
|
@ -46,6 +46,39 @@ func instanceAccount(account *gtsmodel.Account) bool {
|
|||
(account.Username == "internal.fetch" && strings.Contains(account.Note, "internal service actor"))
|
||||
}
|
||||
|
||||
// GetRemoteAccountParams wraps parameters for a remote account lookup.
|
||||
//
|
||||
// RequestingUsername: the username of the user doing the lookup request (optional).
|
||||
// If not set, then the GtS instance account will be used to do the lookup.
|
||||
//
|
||||
// RemoteAccountID: the ActivityPub URI of the remote account (optional).
|
||||
// If not set, the ActivityPub URI of the remote account will be discovered
|
||||
// via webfinger, so you must set RemoteAccountUsername and RemoteAccountDomain
|
||||
// if this parameter is not set.
|
||||
//
|
||||
// RemoteAccountUsername: the username of the remote account (optional).
|
||||
// If RemoteAccountID is not set, then this value must be set.
|
||||
//
|
||||
// RemoteAccountDomain: the domain of the remote account (optional).
|
||||
// If RemoteAccountID is not set, then this value must be set.
|
||||
//
|
||||
// Blocking: whether to do a blocking call to the remote instance. If true,
|
||||
// then the account's media and other fields will be fully dereferenced before it is returned.
|
||||
// If false, then the account's media and other fields will be dereferenced in the background,
|
||||
// so only a minimal account representation will be returned by GetRemoteAccount.
|
||||
//
|
||||
// Refresh: whether to refresh the account by performing dereferencing all over again.
|
||||
// If true, the account will be updated and returned.
|
||||
// If false, and the account already exists in the database, then that will be returned instead.
|
||||
type GetRemoteAccountParams struct {
|
||||
RequestingUsername string
|
||||
RemoteAccountID *url.URL
|
||||
RemoteAccountUsername string
|
||||
RemoteAccountDomain string
|
||||
Blocking bool
|
||||
Refresh bool
|
||||
}
|
||||
|
||||
// GetRemoteAccount completely dereferences a remote account, converts it to a GtS model account,
|
||||
// puts it in the database, and returns it to a caller.
|
||||
//
|
||||
|
@ -54,7 +87,7 @@ func instanceAccount(account *gtsmodel.Account) bool {
|
|||
// the fetched account is complete.
|
||||
//
|
||||
// SIDE EFFECTS: remote account will be stored in the database, or updated if it already exists (and refresh is true).
|
||||
func (d *deref) GetRemoteAccount(ctx context.Context, username string, remoteAccountID *url.URL, blocking bool, refresh bool) (*gtsmodel.Account, error) {
|
||||
func (d *deref) GetRemoteAccount(ctx context.Context, params GetRemoteAccountParams) (*gtsmodel.Account, error) {
|
||||
new := true
|
||||
|
||||
// check if we already have the account in our db, and just return it unless we'd doing a refresh
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
// Dereferencer wraps logic and functionality for doing dereferencing of remote accounts, statuses, etc, from federated instances.
|
||||
type Dereferencer interface {
|
||||
GetRemoteAccount(ctx context.Context, username string, remoteAccountID *url.URL, blocking bool, refresh bool) (*gtsmodel.Account, error)
|
||||
GetRemoteAccount(ctx context.Context, params GetRemoteAccountParams) (*gtsmodel.Account, error)
|
||||
|
||||
GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refetch, includeParent bool) (*gtsmodel.Status, ap.Statusable, error)
|
||||
EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent bool) (*gtsmodel.Status, error)
|
||||
|
|
|
@ -53,14 +53,10 @@ type Federator interface {
|
|||
// If something goes wrong during authentication, nil, false, and an error will be returned.
|
||||
AuthenticateFederatedRequest(ctx context.Context, username string) (*url.URL, gtserror.WithCode)
|
||||
|
||||
// FingerRemoteAccount performs a webfinger lookup for a remote account, using the .well-known path. It will return the ActivityPub URI for that
|
||||
// account, or an error if it doesn't exist or can't be retrieved.
|
||||
FingerRemoteAccount(ctx context.Context, requestingUsername string, targetUsername string, targetDomain string) (*url.URL, error)
|
||||
|
||||
DereferenceRemoteThread(ctx context.Context, username string, statusURI *url.URL) error
|
||||
DereferenceAnnounce(ctx context.Context, announce *gtsmodel.Status, requestingUsername string) error
|
||||
|
||||
GetRemoteAccount(ctx context.Context, username string, remoteAccountID *url.URL, blocking bool, refresh bool) (*gtsmodel.Account, error)
|
||||
GetRemoteAccount(ctx context.Context, params dereferencing.GetRemoteAccountParams) (*gtsmodel.Account, error)
|
||||
|
||||
GetRemoteStatus(ctx context.Context, username string, remoteStatusID *url.URL, refetch, includeParent bool) (*gtsmodel.Status, ap.Statusable, error)
|
||||
EnrichRemoteStatus(ctx context.Context, username string, status *gtsmodel.Status, includeParent bool) (*gtsmodel.Status, error)
|
||||
|
|
Loading…
Reference in a new issue