1
0

Other(refactor): Move UserAgent out of frontend

This commit is contained in:
James Houlahan
2022-08-18 16:15:19 +02:00
committed by Jakub
parent 1a8e4c953d
commit 4c52a12507
9 changed files with 23 additions and 12 deletions

View File

@ -92,6 +92,7 @@ func main(b *base.Base, c *cli.Context) error { //nolint:funlen
b.CrashHandler, b.CrashHandler,
b.Listener, b.Listener,
b.TLS, b.TLS,
b.UserAgent,
cache, cache,
builder, builder,
b.CM, b.CM,
@ -161,7 +162,6 @@ func main(b *base.Base, c *cli.Context) error { //nolint:funlen
b.Settings, b.Settings,
b.Listener, b.Listener,
b.Updater, b.Updater,
b.UserAgent,
bridge, bridge,
smtpBackend, smtpBackend,
b, b,

View File

@ -28,6 +28,7 @@ import (
"github.com/ProtonMail/go-autostart" "github.com/ProtonMail/go-autostart"
"github.com/ProtonMail/proton-bridge/v2/internal/config/settings" "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/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/constants"
"github.com/ProtonMail/proton-bridge/v2/internal/metrics" "github.com/ProtonMail/proton-bridge/v2/internal/metrics"
"github.com/ProtonMail/proton-bridge/v2/internal/sentry" "github.com/ProtonMail/proton-bridge/v2/internal/sentry"
@ -54,6 +55,7 @@ type Bridge struct {
updater Updater updater Updater
versioner Versioner versioner Versioner
tls *tls.TLS tls *tls.TLS
userAgent *useragent.UserAgent
cacheProvider CacheProvider cacheProvider CacheProvider
autostart *autostart.App autostart *autostart.App
// Bridge's global errors list. // Bridge's global errors list.
@ -72,6 +74,7 @@ func New(
panicHandler users.PanicHandler, panicHandler users.PanicHandler,
eventListener listener.Listener, eventListener listener.Listener,
tls *tls.TLS, tls *tls.TLS,
userAgent *useragent.UserAgent,
cache cache.Cache, cache cache.Cache,
builder *message.Builder, builder *message.Builder,
clientManager pmapi.Manager, clientManager pmapi.Manager,
@ -103,6 +106,7 @@ func New(
updater: updater, updater: updater,
versioner: versioner, versioner: versioner,
tls: tls, tls: tls,
userAgent: userAgent,
cacheProvider: cacheProvider, cacheProvider: cacheProvider,
autostart: autostart, autostart: autostart,
isFirstStart: false, isFirstStart: false,

View File

@ -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)
}

View File

@ -21,7 +21,6 @@ package frontend
import ( import (
"github.com/ProtonMail/proton-bridge/v2/internal/bridge" "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/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/cli"
"github.com/ProtonMail/proton-bridge/v2/internal/frontend/grpc" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/grpc"
"github.com/ProtonMail/proton-bridge/v2/internal/frontend/types" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/types"
@ -46,7 +45,6 @@ func New(
settings *settings.Settings, settings *settings.Settings,
eventListener listener.Listener, eventListener listener.Listener,
updater types.Updater, updater types.Updater,
userAgent *useragent.UserAgent,
bridge *bridge.Bridge, bridge *bridge.Bridge,
noEncConfirmator types.NoEncConfirmator, noEncConfirmator types.NoEncConfirmator,
restarter types.Restarter, restarter types.Restarter,
@ -60,7 +58,6 @@ func New(
settings, settings,
eventListener, eventListener,
updater, updater,
userAgent,
bridgeWrap, bridgeWrap,
noEncConfirmator, noEncConfirmator,
restarter, restarter,

View File

@ -28,7 +28,6 @@ import (
"github.com/ProtonMail/proton-bridge/v2/internal/bridge" "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/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/events"
"github.com/ProtonMail/proton-bridge/v2/internal/frontend/types" "github.com/ProtonMail/proton-bridge/v2/internal/frontend/types"
"github.com/ProtonMail/proton-bridge/v2/internal/updater" "github.com/ProtonMail/proton-bridge/v2/internal/updater"
@ -55,7 +54,6 @@ type Service struct { // nolint:structcheck
eventListener listener.Listener eventListener listener.Listener
updater types.Updater updater types.Updater
updateCheckMutex sync.Mutex updateCheckMutex sync.Mutex
userAgent *useragent.UserAgent
bridge types.Bridger bridge types.Bridger
restarter types.Restarter restarter types.Restarter
showOnStartup bool showOnStartup bool
@ -76,7 +74,6 @@ func NewService(
settings *settings.Settings, settings *settings.Settings,
eventListener listener.Listener, eventListener listener.Listener,
updater types.Updater, updater types.Updater,
userAgent *useragent.UserAgent,
bridge types.Bridger, bridge types.Bridger,
_ types.NoEncConfirmator, _ types.NoEncConfirmator,
restarter types.Restarter, restarter types.Restarter,
@ -88,7 +85,6 @@ func NewService(
settings: settings, settings: settings,
eventListener: eventListener, eventListener: eventListener,
updater: updater, updater: updater,
userAgent: userAgent,
bridge: bridge, bridge: bridge,
restarter: restarter, restarter: restarter,
showOnStartup: showOnStartup, showOnStartup: showOnStartup,

View File

@ -258,7 +258,7 @@ func (s *Service) ColorSchemeName(context.Context, *emptypb.Empty) (*wrapperspb.
func (s *Service) CurrentEmailClient(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) { func (s *Service) CurrentEmailClient(context.Context, *emptypb.Empty) (*wrapperspb.StringValue, error) {
s.log.Info("CurrentEmailClient") 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) { func (s *Service) ReportBug(_ context.Context, report *ReportBugRequest) (*emptypb.Empty, error) {

View File

@ -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. 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.eventStreamCh = make(chan *StreamEvent)
s.eventStreamDoneCh = make(chan struct{}) s.eventStreamDoneCh = make(chan struct{})

View File

@ -85,6 +85,9 @@ type Bridger interface {
GetLicenseFilePath() string GetLicenseFilePath() string
GetDependencyLicensesLink() string GetDependencyLicensesLink() string
GetCurrentUserAgent() string
SetCurrentPlatform(string)
// -- old -- // -- old --
ReportBug(osType, osVersion, description, accountName, address, emailClient string, attachLogs bool) error ReportBug(osType, osVersion, description, accountName, address, emailClient string, attachLogs bool) error

View File

@ -42,7 +42,7 @@ func (ctx *TestContext) GetBridge() *bridge.Bridge {
// withBridgeInstance creates a bridge instance for use in the test. // withBridgeInstance creates a bridge instance for use in the test.
// TestContext has this by default once called with env variable TEST_APP=bridge. // TestContext has this by default once called with env variable TEST_APP=bridge.
func (ctx *TestContext) withBridgeInstance() { 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.users = ctx.bridge.Users
ctx.addCleanupChecked(ctx.bridge.ClearData, "Cleaning bridge data") ctx.addCleanupChecked(ctx.bridge.ClearData, "Cleaning bridge data")
} }
@ -74,6 +74,7 @@ func newBridgeInstance(
cacheProvider bridge.CacheProvider, cacheProvider bridge.CacheProvider,
fakeSettings *fakeSettings, fakeSettings *fakeSettings,
tls *tls.TLS, tls *tls.TLS,
userAgent *useragent.UserAgent,
credStore users.CredentialsStorer, credStore users.CredentialsStorer,
eventListener listener.Listener, eventListener listener.Listener,
clientManager pmapi.Manager, clientManager pmapi.Manager,
@ -82,10 +83,11 @@ func newBridgeInstance(
locations, locations,
cacheProvider, cacheProvider,
fakeSettings, fakeSettings,
sentry.NewReporter("bridge", constants.Version, useragent.New()), sentry.NewReporter("bridge", constants.Version, userAgent),
&panicHandler{t: t}, &panicHandler{t: t},
eventListener, eventListener,
tls, tls,
userAgent,
cache.NewInMemoryCache(100*(1<<20)), cache.NewInMemoryCache(100*(1<<20)),
message.NewBuilder(fakeSettings.GetInt(settings.FetchWorkers), fakeSettings.GetInt(settings.AttachmentWorkers)), message.NewBuilder(fakeSettings.GetInt(settings.FetchWorkers), fakeSettings.GetInt(settings.AttachmentWorkers)),
clientManager, clientManager,