From 4c52a12507520a6b671b23d2b43560b7d7b565da Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Thu, 18 Aug 2022 16:15:19 +0200 Subject: [PATCH] Other(refactor): Move UserAgent out of frontend --- internal/app/bridge/bridge.go | 2 +- internal/bridge/bridge.go | 4 ++++ internal/bridge/useragent.go | 9 +++++++++ internal/frontend/frontend.go | 3 --- internal/frontend/grpc/service.go | 4 ---- internal/frontend/grpc/service_methods.go | 2 +- internal/frontend/grpc/service_stream.go | 2 +- internal/frontend/types/types.go | 3 +++ test/context/bridge.go | 6 ++++-- 9 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 internal/bridge/useragent.go diff --git a/internal/app/bridge/bridge.go b/internal/app/bridge/bridge.go index 60caf166..ecc26e21 100644 --- a/internal/app/bridge/bridge.go +++ b/internal/app/bridge/bridge.go @@ -92,6 +92,7 @@ func main(b *base.Base, c *cli.Context) error { //nolint:funlen b.CrashHandler, b.Listener, b.TLS, + b.UserAgent, cache, builder, b.CM, @@ -161,7 +162,6 @@ func main(b *base.Base, c *cli.Context) error { //nolint:funlen b.Settings, b.Listener, b.Updater, - b.UserAgent, bridge, smtpBackend, b, diff --git a/internal/bridge/bridge.go b/internal/bridge/bridge.go index 1995198b..19d2da12 100644 --- a/internal/bridge/bridge.go +++ b/internal/bridge/bridge.go @@ -28,6 +28,7 @@ import ( "github.com/ProtonMail/go-autostart" "github.com/ProtonMail/proton-bridge/v2/internal/config/settings" "github.com/ProtonMail/proton-bridge/v2/internal/config/tls" + "github.com/ProtonMail/proton-bridge/v2/internal/config/useragent" "github.com/ProtonMail/proton-bridge/v2/internal/constants" "github.com/ProtonMail/proton-bridge/v2/internal/metrics" "github.com/ProtonMail/proton-bridge/v2/internal/sentry" @@ -54,6 +55,7 @@ type Bridge struct { updater Updater versioner Versioner tls *tls.TLS + userAgent *useragent.UserAgent cacheProvider CacheProvider autostart *autostart.App // Bridge's global errors list. @@ -72,6 +74,7 @@ func New( panicHandler users.PanicHandler, eventListener listener.Listener, tls *tls.TLS, + userAgent *useragent.UserAgent, cache cache.Cache, builder *message.Builder, clientManager pmapi.Manager, @@ -103,6 +106,7 @@ func New( updater: updater, versioner: versioner, tls: tls, + userAgent: userAgent, cacheProvider: cacheProvider, autostart: autostart, isFirstStart: false, diff --git a/internal/bridge/useragent.go b/internal/bridge/useragent.go new file mode 100644 index 00000000..fbfadc84 --- /dev/null +++ b/internal/bridge/useragent.go @@ -0,0 +1,9 @@ +package bridge + +func (b *Bridge) GetCurrentUserAgent() string { + return b.userAgent.String() +} + +func (b *Bridge) SetCurrentPlatform(platform string) { + b.userAgent.SetPlatform(platform) +} diff --git a/internal/frontend/frontend.go b/internal/frontend/frontend.go index 555094da..fcef9f62 100644 --- a/internal/frontend/frontend.go +++ b/internal/frontend/frontend.go @@ -21,7 +21,6 @@ package frontend import ( "github.com/ProtonMail/proton-bridge/v2/internal/bridge" "github.com/ProtonMail/proton-bridge/v2/internal/config/settings" - "github.com/ProtonMail/proton-bridge/v2/internal/config/useragent" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/cli" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/grpc" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/types" @@ -46,7 +45,6 @@ func New( settings *settings.Settings, eventListener listener.Listener, updater types.Updater, - userAgent *useragent.UserAgent, bridge *bridge.Bridge, noEncConfirmator types.NoEncConfirmator, restarter types.Restarter, @@ -60,7 +58,6 @@ func New( settings, eventListener, updater, - userAgent, bridgeWrap, noEncConfirmator, restarter, diff --git a/internal/frontend/grpc/service.go b/internal/frontend/grpc/service.go index 1d530012..a25bc271 100644 --- a/internal/frontend/grpc/service.go +++ b/internal/frontend/grpc/service.go @@ -28,7 +28,6 @@ import ( "github.com/ProtonMail/proton-bridge/v2/internal/bridge" "github.com/ProtonMail/proton-bridge/v2/internal/config/settings" - "github.com/ProtonMail/proton-bridge/v2/internal/config/useragent" "github.com/ProtonMail/proton-bridge/v2/internal/events" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/types" "github.com/ProtonMail/proton-bridge/v2/internal/updater" @@ -55,7 +54,6 @@ type Service struct { // nolint:structcheck eventListener listener.Listener updater types.Updater updateCheckMutex sync.Mutex - userAgent *useragent.UserAgent bridge types.Bridger restarter types.Restarter showOnStartup bool @@ -76,7 +74,6 @@ func NewService( settings *settings.Settings, eventListener listener.Listener, updater types.Updater, - userAgent *useragent.UserAgent, bridge types.Bridger, _ types.NoEncConfirmator, restarter types.Restarter, @@ -88,7 +85,6 @@ func NewService( settings: settings, eventListener: eventListener, updater: updater, - userAgent: userAgent, bridge: bridge, restarter: restarter, showOnStartup: showOnStartup, diff --git a/internal/frontend/grpc/service_methods.go b/internal/frontend/grpc/service_methods.go index a6a80125..882b8950 100644 --- a/internal/frontend/grpc/service_methods.go +++ b/internal/frontend/grpc/service_methods.go @@ -258,7 +258,7 @@ func (s *Service) ColorSchemeName(context.Context, *emptypb.Empty) (*wrapperspb. func (s *Service) CurrentEmailClient(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) { s.log.Info("CurrentEmailClient") - return wrapperspb.String(s.userAgent.String()), nil + return wrapperspb.String(s.bridge.GetCurrentUserAgent()), nil } func (s *Service) ReportBug(_ context.Context, report *ReportBugRequest) (*emptypb.Empty, error) { diff --git a/internal/frontend/grpc/service_stream.go b/internal/frontend/grpc/service_stream.go index 645fba96..7e3b30b4 100644 --- a/internal/frontend/grpc/service_stream.go +++ b/internal/frontend/grpc/service_stream.go @@ -34,7 +34,7 @@ func (s *Service) StartEventStream(request *EventStreamRequest, server Bridge_St return status.Errorf(codes.AlreadyExists, "the service is already streaming") // TO-DO GODT-1667 decide if we want to kill the existing stream. } - s.userAgent.SetPlatform(request.ClientPlatform) + s.bridge.SetCurrentPlatform(request.ClientPlatform) s.eventStreamCh = make(chan *StreamEvent) s.eventStreamDoneCh = make(chan struct{}) diff --git a/internal/frontend/types/types.go b/internal/frontend/types/types.go index d504e463..ae1fd5fa 100644 --- a/internal/frontend/types/types.go +++ b/internal/frontend/types/types.go @@ -85,6 +85,9 @@ type Bridger interface { GetLicenseFilePath() string GetDependencyLicensesLink() string + GetCurrentUserAgent() string + SetCurrentPlatform(string) + // -- old -- ReportBug(osType, osVersion, description, accountName, address, emailClient string, attachLogs bool) error diff --git a/test/context/bridge.go b/test/context/bridge.go index f64cc899..87b1624b 100644 --- a/test/context/bridge.go +++ b/test/context/bridge.go @@ -42,7 +42,7 @@ func (ctx *TestContext) GetBridge() *bridge.Bridge { // withBridgeInstance creates a bridge instance for use in the test. // TestContext has this by default once called with env variable TEST_APP=bridge. func (ctx *TestContext) withBridgeInstance() { - ctx.bridge = newBridgeInstance(ctx.t, ctx.locations, ctx.cache, ctx.settings, ctx.tls, ctx.credStore, ctx.listener, ctx.clientManager) + ctx.bridge = newBridgeInstance(ctx.t, ctx.locations, ctx.cache, ctx.settings, ctx.tls, ctx.userAgent, ctx.credStore, ctx.listener, ctx.clientManager) ctx.users = ctx.bridge.Users ctx.addCleanupChecked(ctx.bridge.ClearData, "Cleaning bridge data") } @@ -74,6 +74,7 @@ func newBridgeInstance( cacheProvider bridge.CacheProvider, fakeSettings *fakeSettings, tls *tls.TLS, + userAgent *useragent.UserAgent, credStore users.CredentialsStorer, eventListener listener.Listener, clientManager pmapi.Manager, @@ -82,10 +83,11 @@ func newBridgeInstance( locations, cacheProvider, fakeSettings, - sentry.NewReporter("bridge", constants.Version, useragent.New()), + sentry.NewReporter("bridge", constants.Version, userAgent), &panicHandler{t: t}, eventListener, tls, + userAgent, cache.NewInMemoryCache(100*(1<<20)), message.NewBuilder(fakeSettings.GetInt(settings.FetchWorkers), fakeSettings.GetInt(settings.AttachmentWorkers)), clientManager,