diff options
Diffstat (limited to 'internal/typeutils')
-rw-r--r-- | internal/typeutils/astointernal.go | 30 | ||||
-rw-r--r-- | internal/typeutils/astointernal_test.go | 8 | ||||
-rw-r--r-- | internal/typeutils/converter.go | 11 | ||||
-rw-r--r-- | internal/typeutils/internal.go | 6 |
4 files changed, 15 insertions, 40 deletions
diff --git a/internal/typeutils/astointernal.go b/internal/typeutils/astointernal.go index 7df2a138e..fff9c807a 100644 --- a/internal/typeutils/astointernal.go +++ b/internal/typeutils/astointernal.go @@ -33,7 +33,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/uris" ) -func (c *converter) ASRepresentationToAccount(ctx context.Context, accountable ap.Accountable, accountDomain string, update bool) (*gtsmodel.Account, error) { +func (c *converter) ASRepresentationToAccount(ctx context.Context, accountable ap.Accountable, accountDomain string) (*gtsmodel.Account, error) { // first check if we actually already know this account uriProp := accountable.GetJSONLDId() if uriProp == nil || !uriProp.IsIRI() { @@ -41,18 +41,6 @@ func (c *converter) ASRepresentationToAccount(ctx context.Context, accountable a } uri := uriProp.GetIRI() - if !update { - acct, err := c.db.GetAccountByURI(ctx, uri.String()) - if err == nil { - // we already know this account so we can skip generating it - return acct, nil - } - if err != db.ErrNoEntries { - // we don't know the account and there's been a real error - return nil, fmt.Errorf("error getting account with uri %s from the database: %s", uri.String(), err) - } - } - // we don't know the account, or we're being told to update it, so we need to generate it from the person -- at least we already have the URI! acct := >smodel.Account{} acct.URI = uri.String() @@ -169,16 +157,12 @@ func (c *converter) ASRepresentationToAccount(ctx context.Context, accountable a acct.InboxURI = accountable.GetActivityStreamsInbox().GetIRI().String() } - // SharedInboxURI - if sharedInboxURI := ap.ExtractSharedInbox(accountable); sharedInboxURI != nil { - var sharedInbox string - - // only trust shared inbox if it has at least two domains, - // from the right, in common with the domain of the account - if dns.CompareDomainName(acct.Domain, sharedInboxURI.Host) >= 2 { - sharedInbox = sharedInboxURI.String() - } - + // SharedInboxURI: + // only trust shared inbox if it has at least two domains, + // from the right, in common with the domain of the account + if sharedInboxURI := ap.ExtractSharedInbox(accountable); // nocollapse + sharedInboxURI != nil && dns.CompareDomainName(acct.Domain, sharedInboxURI.Host) >= 2 { + sharedInbox := sharedInboxURI.String() acct.SharedInboxURI = &sharedInbox } diff --git a/internal/typeutils/astointernal_test.go b/internal/typeutils/astointernal_test.go index 3613f38f4..ed7b97ebd 100644 --- a/internal/typeutils/astointernal_test.go +++ b/internal/typeutils/astointernal_test.go @@ -52,7 +52,7 @@ func (suite *ASToInternalTestSuite) jsonToType(in string) vocab.Type { func (suite *ASToInternalTestSuite) TestParsePerson() { testPerson := suite.testPeople["https://unknown-instance.com/users/brand_new_person"] - acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), testPerson, "", false) + acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), testPerson, "") suite.NoError(err) suite.Equal("https://unknown-instance.com/users/brand_new_person", acct.URI) @@ -74,7 +74,7 @@ func (suite *ASToInternalTestSuite) TestParsePerson() { func (suite *ASToInternalTestSuite) TestParsePersonWithSharedInbox() { testPerson := suite.testPeople["https://turnip.farm/users/turniplover6969"] - acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), testPerson, "", false) + acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), testPerson, "") suite.NoError(err) suite.Equal("https://turnip.farm/users/turniplover6969", acct.URI) @@ -131,7 +131,7 @@ func (suite *ASToInternalTestSuite) TestParseGargron() { suite.FailNow("type not coercible") } - acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), rep, "", false) + acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), rep, "") suite.NoError(err) suite.Equal("https://mastodon.social/inbox", *acct.SharedInboxURI) } @@ -183,7 +183,7 @@ func (suite *ASToInternalTestSuite) TestParseOwncastService() { suite.FailNow("type not coercible") } - acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), rep, "", false) + acct, err := suite.typeconverter.ASRepresentationToAccount(context.Background(), rep, "") suite.NoError(err) suite.Equal("rgh", acct.Username) diff --git a/internal/typeutils/converter.go b/internal/typeutils/converter.go index 0f741ddb1..6a783e190 100644 --- a/internal/typeutils/converter.go +++ b/internal/typeutils/converter.go @@ -111,15 +111,10 @@ type TypeConverter interface { ACTIVITYSTREAMS MODEL TO INTERNAL (gts) MODEL */ - // ASPersonToAccount converts a remote account/person/application representation into a gts model account. + // ASRepresentationToAccount converts a remote account/person/application representation into a gts model account. // - // If update is false, and the account is already known in the database, then the existing account entry will be returned. - // If update is true, then even if the account is already known, all fields in the accountable will be parsed and a new *gtsmodel.Account - // will be generated. This is useful when one needs to force refresh of an account, eg., during an Update of a Profile. - // - // If accountDomain is set (not an empty string) then this value will be used as the account's Domain. If not set, - // then the Host of the accountable's AP ID will be used instead. - ASRepresentationToAccount(ctx context.Context, accountable ap.Accountable, accountDomain string, update bool) (*gtsmodel.Account, error) + // If accountDomain is provided then this value will be used as the account's Domain, else the AP ID host. + ASRepresentationToAccount(ctx context.Context, accountable ap.Accountable, accountDomain string) (*gtsmodel.Account, error) // ASStatus converts a remote activitystreams 'status' representation into a gts model status. ASStatusToStatus(ctx context.Context, statusable ap.Statusable) (*gtsmodel.Status, error) // ASFollowToFollowRequest converts a remote activitystreams `follow` representation into gts model follow request. diff --git a/internal/typeutils/internal.go b/internal/typeutils/internal.go index f0c501fa9..62e43f8c7 100644 --- a/internal/typeutils/internal.go +++ b/internal/typeutils/internal.go @@ -27,11 +27,7 @@ func (c *converter) FollowRequestToFollow(ctx context.Context, f *gtsmodel.Follo func (c *converter) StatusToBoost(ctx context.Context, s *gtsmodel.Status, boostingAccount *gtsmodel.Account) (*gtsmodel.Status, error) { // the wrapper won't use the same ID as the boosted status so we generate some new UUIDs accountURIs := uris.GenerateURIsForAccount(boostingAccount.Username) - boostWrapperStatusID, err := id.NewULID() - if err != nil { - return nil, err - } - + boostWrapperStatusID := id.NewULID() boostWrapperStatusURI := accountURIs.StatusesURI + "/" + boostWrapperStatusID boostWrapperStatusURL := accountURIs.StatusesURL + "/" + boostWrapperStatusID |