From dd9d6728fcbfbff80ee316245f015bda4f46570a Mon Sep 17 00:00:00 2001 From: Harshit Raj <138776749+harshitraj1@users.noreply.github.com> Date: Thu, 27 Nov 2025 16:20:27 +0530 Subject: [PATCH 1/2] Add router middleware option for mux --- transport/http/server.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/transport/http/server.go b/transport/http/server.go index 19c019c06cf..381e3204a3e 100644 --- a/transport/http/server.go +++ b/transport/http/server.go @@ -153,6 +153,13 @@ func MethodNotAllowedHandler(handler http.Handler) ServerOption { } } +// RouterMiddleware is mux's MiddlewareFunc +func RouterMiddleware(middlewareFunc mux.MiddlewareFunc) ServerOption { + return func(s *Server) { + s.router.Use(middlewareFunc) + } +} + // Server is an HTTP server wrapper. type Server struct { *http.Server From bb33786371ab7f5ed629ebc70a6b488c8eb97e05 Mon Sep 17 00:00:00 2001 From: Harshit Raj <138776749+harshitraj1@users.noreply.github.com> Date: Thu, 27 Nov 2025 17:01:00 +0530 Subject: [PATCH 2/2] Make router middlewares retain trace options Make router middlewares retain trace options --- transport/http/server.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/transport/http/server.go b/transport/http/server.go index 381e3204a3e..3ef09e6eb2c 100644 --- a/transport/http/server.go +++ b/transport/http/server.go @@ -153,10 +153,9 @@ func MethodNotAllowedHandler(handler http.Handler) ServerOption { } } -// RouterMiddleware is mux's MiddlewareFunc func RouterMiddleware(middlewareFunc mux.MiddlewareFunc) ServerOption { return func(s *Server) { - s.router.Use(middlewareFunc) + s.routerMiddleware = append(s.routerMiddleware, middlewareFunc) } } @@ -179,6 +178,7 @@ type Server struct { ene EncodeErrorFunc strictSlash bool router *mux.Router + routerMiddleware []mux.MiddlewareFunc } // NewServer creates an HTTP server by options. @@ -203,6 +203,7 @@ func NewServer(opts ...ServerOption) *Server { } srv.router.StrictSlash(srv.strictSlash) srv.router.Use(srv.filter()) + srv.router.Use(srv.routerMiddleware...) srv.Server = &http.Server{ Handler: FilterChain(srv.filters...)(srv.router), TLSConfig: srv.tlsConf,