From 878e512bc0ee5d60fa9fc615366bec08209f44c3 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Tue, 21 Jun 2022 15:55:31 +0200 Subject: [PATCH 1/2] feat: make Router.enableTracing configurable --- server/server.go | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/server/server.go b/server/server.go index 724f5ee..5bac6de 100644 --- a/server/server.go +++ b/server/server.go @@ -31,11 +31,16 @@ type Server struct { doneOnce sync.Once } +type RouterConfig struct { + EnableTracing bool +} + type Config struct { HealthPath string `split_words:"true"` Port int Host string TLS nconf.TLSConfig + Router RouterConfig } // APIDefinition is used to control lifecycle of the API @@ -67,7 +72,10 @@ func NewOpts(log logrus.FieldLogger, api APIDefinition, opts ...Opt) (*Server, e WithHostAndPort("", defaultPort), } - return buildServer(log, api, append(defaultOpts, opts...), defaultHealthPath) + return buildServer(log, api, append(defaultOpts, opts...), Config{ + HealthPath: defaultHealthPath, + Router: RouterConfig{EnableTracing: true}, + }) } // New will build a server with the defaults in place @@ -85,7 +93,7 @@ func New(log logrus.FieldLogger, config Config, api APIDefinition) (*Server, err opts = append(opts, WithTLS(tcfg)) } - return buildServer(log, api, opts, config.HealthPath) + return buildServer(log, api, opts, config) } func (s *Server) Shutdown(to time.Duration) error { @@ -173,25 +181,32 @@ func APIFunc(start func(router.Router) error, stop func(), info APIInfo) APIDefi } } -func buildRouter(log logrus.FieldLogger, api APIDefinition, healthPath string) router.Router { +func buildRouter(log logrus.FieldLogger, api APIDefinition, config Config) router.Router { var healthHandler router.APIHandler if checker, ok := api.(HealthChecker); ok { healthHandler = checker.Healthy } - r := router.New( - log, - router.OptHealthCheck(healthPath, healthHandler), - router.OptEnableTracing(api.Info().Name), + opts := []router.Option{ + router.OptHealthCheck(config.HealthPath, healthHandler), router.OptVersionHeader(api.Info().Name, api.Info().Version), router.OptRecoverer(), + } + + if config.Router.EnableTracing { + opts = append(opts, router.OptEnableTracing(api.Info().Name)) + } + + r := router.New( + log, + opts..., ) return r } -func buildServer(log logrus.FieldLogger, api APIDefinition, opts []Opt, healthPath string) (*Server, error) { - r := buildRouter(log, api, healthPath) +func buildServer(log logrus.FieldLogger, api APIDefinition, opts []Opt, config Config) (*Server, error) { + r := buildRouter(log, api, config) if err := api.Start(r); err != nil { return nil, errors.Wrap(err, "Failed to start API") From 2351a826b214c4fe13f74106833796cf81d450c6 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 22 Jun 2022 09:17:42 +0200 Subject: [PATCH 2/2] feat: flip bool to keep things unchanged --- server/server.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/server/server.go b/server/server.go index 5bac6de..225d62a 100644 --- a/server/server.go +++ b/server/server.go @@ -32,7 +32,7 @@ type Server struct { } type RouterConfig struct { - EnableTracing bool + DisableTracing bool } type Config struct { @@ -74,7 +74,6 @@ func NewOpts(log logrus.FieldLogger, api APIDefinition, opts ...Opt) (*Server, e return buildServer(log, api, append(defaultOpts, opts...), Config{ HealthPath: defaultHealthPath, - Router: RouterConfig{EnableTracing: true}, }) } @@ -193,7 +192,7 @@ func buildRouter(log logrus.FieldLogger, api APIDefinition, config Config) route router.OptRecoverer(), } - if config.Router.EnableTracing { + if !config.Router.DisableTracing { opts = append(opts, router.OptEnableTracing(api.Info().Name)) }