Skip to content

Commit 162cb60

Browse files
committed
refactor: added base router middlewares to its router groups
1 parent bde776d commit 162cb60

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

http/route/handlers.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,5 @@ func ChainHandlers(
2020
for i := n - 1; i >= 0; i = i - 1 {
2121
chainedHandler = handlers[i](chainedHandler)
2222
}
23-
2423
return chainedHandler
2524
}

http/route/router.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ type (
1010
RouterWrapper interface {
1111
Handler() http.Handler
1212
Mux() *http.ServeMux
13+
GetMiddlewares() *[]func(http.Handler) http.Handler
1314
HandleFunc(
1415
path string,
1516
handler http.HandlerFunc,
@@ -30,6 +31,7 @@ type (
3031

3132
// Router is the route group struct
3233
Router struct {
34+
middlewares []func(http.Handler) http.Handler
3335
firstHandler http.Handler
3436
mux *http.ServeMux
3537
path string
@@ -54,10 +56,11 @@ func NewRouter(
5456
mux := http.NewServeMux()
5557

5658
// Chain the handlers
57-
firstChainedHandler := ChainHandlers(mux, middlewares...)
59+
firstHandler := ChainHandlers(mux, middlewares...)
5860

5961
return &Router{
60-
firstHandler: firstChainedHandler,
62+
middlewares: middlewares,
63+
firstHandler: firstHandler,
6164
mux: mux,
6265
logger: logger,
6366
path: path,
@@ -95,11 +98,12 @@ func NewGroup(
9598
mux := http.NewServeMux()
9699

97100
// Chain the handlers
98-
firstChainedHandler := ChainHandlers(mux, middlewares...)
101+
firstHandler := ChainHandlers(mux, middlewares...)
99102

100103
// Create a new router
101104
instance := &Router{
102-
firstHandler: firstChainedHandler,
105+
middlewares: middlewares,
106+
firstHandler: firstHandler,
103107
mux: mux,
104108
logger: baseRouter.logger,
105109
path: routerPath,
@@ -122,17 +126,22 @@ func (r *Router) Mux() *http.ServeMux {
122126
return r.mux
123127
}
124128

129+
// GetMiddlewares returns the middlewares
130+
func (r *Router) GetMiddlewares() *[]func(http.Handler) http.Handler {
131+
return &r.middlewares
132+
}
133+
125134
// HandleFunc registers a new route with a path, the handler function and the middlewares
126135
func (r *Router) HandleFunc(
127136
path string,
128137
handler http.HandlerFunc,
129138
middlewares ...func(http.Handler) http.Handler,
130139
) {
131140
// Chain the handlers
132-
firstChainedHandler := ChainHandlers(handler, middlewares...)
141+
firstHandler := ChainHandlers(handler, middlewares...)
133142

134143
// Register the route
135-
r.mux.HandleFunc(path, firstChainedHandler.ServeHTTP)
144+
r.mux.HandleFunc(path, firstHandler.ServeHTTP)
136145

137146
if r.logger != nil && r.mode != nil && !r.mode.IsProd() {
138147
r.logger.RegisterRoute(r.path, path)
@@ -173,6 +182,10 @@ func (r *Router) NewGroup(
173182
path string,
174183
middlewares ...func(next http.Handler) http.Handler,
175184
) *Router {
185+
// Append the base router middlewares
186+
middlewares = append(middlewares, r.middlewares...)
187+
188+
// Create a new group
176189
newGroup, _ := NewGroup(r, path, middlewares...)
177190
return newGroup
178191
}

0 commit comments

Comments
 (0)