[chore] deinterface the typeutils.Converter and update to use state structure (#2217)

* update typeconverter to use state structure

* deinterface the typeutils.TypeConverter -> typeutils.Converter

* finish copying over old type converter code comments

* fix cherry-pick merge issues, fix tests pointing to old typeutils interface type still
This commit is contained in:
kim 2023-09-23 17:44:11 +01:00 committed by GitHub
commit 8f67dd583d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
119 changed files with 611 additions and 742 deletions

View file

@ -372,7 +372,7 @@ func (d *deref) enrichAccount(ctx context.Context, requestUser string, uri *url.
}
// Convert the dereferenced AP account object to our GTS model.
latestAcc, err := d.typeConverter.ASRepresentationToAccount(ctx,
latestAcc, err := d.converter.ASRepresentationToAccount(ctx,
apubAcc,
account.Domain,
)

View file

@ -85,7 +85,7 @@ type Dereferencer interface {
type deref struct {
state *state.State
typeConverter typeutils.TypeConverter
converter *typeutils.Converter
transportController transport.Controller
mediaManager *media.Manager
derefAvatars map[string]*media.ProcessingMedia
@ -99,10 +99,10 @@ type deref struct {
}
// NewDereferencer returns a Dereferencer initialized with the given parameters.
func NewDereferencer(state *state.State, typeConverter typeutils.TypeConverter, transportController transport.Controller, mediaManager *media.Manager) Dereferencer {
func NewDereferencer(state *state.State, converter *typeutils.Converter, transportController transport.Controller, mediaManager *media.Manager) Dereferencer {
return &deref{
state: state,
typeConverter: typeConverter,
converter: converter,
transportController: transportController,
mediaManager: mediaManager,
derefAvatars: make(map[string]*media.ProcessingMedia),

View file

@ -25,6 +25,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/state"
"github.com/superseriousbusiness/gotosocial/internal/storage"
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
"github.com/superseriousbusiness/gotosocial/internal/visibility"
"github.com/superseriousbusiness/gotosocial/testrig"
)
@ -63,17 +64,19 @@ func (suite *DereferencerStandardTestSuite) SetupTest() {
suite.db = testrig.NewTestDB(&suite.state)
converter := typeutils.NewConverter(&suite.state)
testrig.StartTimelines(
&suite.state,
visibility.NewFilter(&suite.state),
testrig.NewTestTypeConverter(suite.db),
converter,
)
suite.storage = testrig.NewInMemoryStorage()
suite.state.DB = suite.db
suite.state.Storage = suite.storage
media := testrig.NewTestMediaManager(&suite.state)
suite.dereferencer = dereferencing.NewDereferencer(&suite.state, testrig.NewTestTypeConverter(suite.db), testrig.NewTestTransportController(&suite.state, testrig.NewMockHTTPClient(nil, "../../../testrig/media")), media)
suite.dereferencer = dereferencing.NewDereferencer(&suite.state, converter, testrig.NewTestTransportController(&suite.state, testrig.NewMockHTTPClient(nil, "../../../testrig/media")), media)
testrig.StandardDBSetup(suite.db, nil)
}

View file

@ -263,7 +263,7 @@ func (d *deref) enrichStatus(
// ActivityPub model was recently dereferenced, so assume that passed status
// may contain out-of-date information, convert AP model to our GTS model.
latestStatus, err := d.typeConverter.ASStatusToStatus(ctx, apubStatus)
latestStatus, err := d.converter.ASStatusToStatus(ctx, apubStatus)
if err != nil {
return nil, nil, gtserror.Newf("error converting statusable to gts model for status %s: %w", uri, err)
}

View file

@ -94,7 +94,7 @@ func (f *federatingDB) Accept(ctx context.Context, accept vocab.ActivityStreamsA
return errors.New("ACCEPT: couldn't parse follow into vocab.ActivityStreamsFollow")
}
// convert the follow to something we can understand
gtsFollow, err := f.typeConverter.ASFollowToFollow(ctx, asFollow)
gtsFollow, err := f.converter.ASFollowToFollow(ctx, asFollow)
if err != nil {
return fmt.Errorf("ACCEPT: error converting asfollow to gtsfollow: %s", err)
}

View file

@ -44,7 +44,7 @@ func (f *federatingDB) Announce(ctx context.Context, announce vocab.ActivityStre
return nil // Already processed.
}
boost, isNew, err := f.typeConverter.ASAnnounceToStatus(ctx, announce)
boost, isNew, err := f.converter.ASAnnounceToStatus(ctx, announce)
if err != nil {
return gtserror.Newf("error converting announce to boost: %w", err)
}

View file

@ -94,7 +94,7 @@ func (f *federatingDB) activityBlock(ctx context.Context, asType vocab.Type, rec
return errors.New("activityBlock: could not convert type to block")
}
block, err := f.typeConverter.ASBlockToBlock(ctx, blockable)
block, err := f.converter.ASBlockToBlock(ctx, blockable)
if err != nil {
return fmt.Errorf("activityBlock: could not convert Block to gts model block")
}
@ -246,7 +246,7 @@ func (f *federatingDB) createStatusable(
// This is a non-forwarded status we can trust the requester on,
// convert this provided statusable data to a useable gtsmodel status.
status, err = f.typeConverter.ASStatusToStatus(ctx, statusable)
status, err = f.converter.ASStatusToStatus(ctx, statusable)
if err != nil {
return gtserror.Newf("error converting statusable to status: %w", err)
}
@ -333,7 +333,7 @@ func (f *federatingDB) activityFollow(ctx context.Context, asType vocab.Type, re
return errors.New("activityFollow: could not convert type to follow")
}
followRequest, err := f.typeConverter.ASFollowToFollowRequest(ctx, follow)
followRequest, err := f.converter.ASFollowToFollowRequest(ctx, follow)
if err != nil {
return fmt.Errorf("activityFollow: could not convert Follow to follow request: %s", err)
}
@ -364,7 +364,7 @@ func (f *federatingDB) activityLike(ctx context.Context, asType vocab.Type, rece
return errors.New("activityLike: could not convert type to like")
}
fave, err := f.typeConverter.ASLikeToFave(ctx, like)
fave, err := f.converter.ASLikeToFave(ctx, like)
if err != nil {
return fmt.Errorf("activityLike: could not convert Like to fave: %w", err)
}
@ -401,7 +401,7 @@ func (f *federatingDB) activityFlag(ctx context.Context, asType vocab.Type, rece
return errors.New("activityFlag: could not convert type to flag")
}
report, err := f.typeConverter.ASFlagToReport(ctx, flag)
report, err := f.converter.ASFlagToReport(ctx, flag)
if err != nil {
return fmt.Errorf("activityFlag: could not convert Flag to report: %w", err)
}

View file

@ -39,17 +39,17 @@ type DB interface {
// FederatingDB uses the underlying DB interface to implement the go-fed pub.Database interface.
// It doesn't care what the underlying implementation of the DB interface is, as long as it works.
type federatingDB struct {
locks mutexes.MutexMap
state *state.State
typeConverter typeutils.TypeConverter
locks mutexes.MutexMap
state *state.State
converter *typeutils.Converter
}
// New returns a DB interface using the given database and config
func New(state *state.State, tc typeutils.TypeConverter) DB {
func New(state *state.State, converter *typeutils.Converter) DB {
fdb := federatingDB{
locks: mutexes.NewMap(-1, -1), // use defaults
state: state,
typeConverter: tc,
locks: mutexes.NewMap(-1, -1), // use defaults
state: state,
converter: converter,
}
return &fdb
}

View file

@ -35,7 +35,7 @@ import (
type FederatingDBTestSuite struct {
suite.Suite
db db.DB
tc typeutils.TypeConverter
tc *typeutils.Converter
fromFederator chan messages.FromFediAPI
federatingDB federatingdb.DB
state state.State
@ -79,7 +79,7 @@ func (suite *FederatingDBTestSuite) SetupTest() {
suite.db = testrig.NewTestDB(&suite.state)
suite.testActivities = testrig.NewTestActivities(suite.testAccounts)
suite.tc = testrig.NewTestTypeConverter(suite.db)
suite.tc = typeutils.NewConverter(&suite.state)
testrig.StartTimelines(
&suite.state,

View file

@ -42,13 +42,13 @@ func (f *federatingDB) Get(ctx context.Context, id *url.URL) (value vocab.Type,
if err != nil {
return nil, err
}
return f.typeConverter.AccountToAS(ctx, acct)
return f.converter.AccountToAS(ctx, acct)
case uris.IsStatusesPath(id):
status, err := f.state.DB.GetStatusByURI(ctx, id.String())
if err != nil {
return nil, err
}
return f.typeConverter.StatusToAS(ctx, status)
return f.converter.StatusToAS(ctx, status)
case uris.IsFollowersPath(id):
return f.Followers(ctx, id)
case uris.IsFollowingPath(id):

View file

@ -85,7 +85,7 @@ func (f *federatingDB) Reject(ctx context.Context, reject vocab.ActivityStreamsR
}
// convert the follow to something we can understand
gtsFollow, err := f.typeConverter.ASFollowToFollow(ctx, asFollow)
gtsFollow, err := f.converter.ASFollowToFollow(ctx, asFollow)
if err != nil {
return fmt.Errorf("Reject: error converting asfollow to gtsfollow: %s", err)
}

View file

@ -97,7 +97,7 @@ func (f *federatingDB) undoFollow(
return nil
}
follow, err := f.typeConverter.ASFollowToFollow(ctx, Follow)
follow, err := f.converter.ASFollowToFollow(ctx, Follow)
if err != nil {
return fmt.Errorf("undoFollow: error converting ActivityStreams Follow to follow: %w", err)
}
@ -139,7 +139,7 @@ func (f *federatingDB) undoLike(
return nil
}
fave, err := f.typeConverter.ASLikeToFave(ctx, Like)
fave, err := f.converter.ASLikeToFave(ctx, Like)
if err != nil {
return fmt.Errorf("undoLike: error converting ActivityStreams Like to fave: %w", err)
}
@ -192,7 +192,7 @@ func (f *federatingDB) undoBlock(
return nil
}
block, err := f.typeConverter.ASBlockToBlock(ctx, Block)
block, err := f.converter.ASBlockToBlock(ctx, Block)
if err != nil {
return fmt.Errorf("undoBlock: error converting ActivityStreams Block to block: %w", err)
}

View file

@ -59,7 +59,7 @@ type federator struct {
db db.DB
federatingDB federatingdb.DB
clock pub.Clock
typeConverter typeutils.TypeConverter
converter *typeutils.Converter
transportController transport.Controller
mediaManager *media.Manager
actor pub.FederatingActor
@ -67,15 +67,15 @@ type federator struct {
}
// NewFederator returns a new federator
func NewFederator(state *state.State, federatingDB federatingdb.DB, transportController transport.Controller, typeConverter typeutils.TypeConverter, mediaManager *media.Manager) Federator {
dereferencer := dereferencing.NewDereferencer(state, typeConverter, transportController, mediaManager)
func NewFederator(state *state.State, federatingDB federatingdb.DB, transportController transport.Controller, converter *typeutils.Converter, mediaManager *media.Manager) Federator {
dereferencer := dereferencing.NewDereferencer(state, converter, transportController, mediaManager)
clock := &Clock{}
f := &federator{
db: state.DB,
federatingDB: federatingDB,
clock: &Clock{},
typeConverter: typeConverter,
converter: converter,
transportController: transportController,
mediaManager: mediaManager,
Dereferencer: dereferencer,

View file

@ -36,7 +36,7 @@ type FederatorStandardTestSuite struct {
suite.Suite
storage *storage.Driver
state state.State
typeconverter typeutils.TypeConverter
typeconverter *typeutils.Converter
transportController transport.Controller
httpClient *testrig.MockHTTPClient
federator federation.Federator
@ -65,7 +65,7 @@ func (suite *FederatorStandardTestSuite) SetupTest() {
suite.testActivities = testrig.NewTestActivities(suite.testAccounts)
suite.storage = testrig.NewInMemoryStorage()
suite.state.Storage = suite.storage
suite.typeconverter = testrig.NewTestTypeConverter(suite.state.DB)
suite.typeconverter = typeutils.NewConverter(&suite.state)
testrig.StartTimelines(
&suite.state,