Skip to content

Commit bdf5def

Browse files
authored
[ENHANCEMENT] Add the possibility to inject pre-middleware for the HTTP server (#224)
Signed-off-by: Augustin Husson <[email protected]>
1 parent 4b64752 commit bdf5def

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

echo/server.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ type Builder struct {
8686
apis []Register
8787
overrideMiddleware bool
8888
mdws []echo.MiddlewareFunc
89+
preMDWs []echo.MiddlewareFunc
8990
gzipSkipper middleware.Skipper
9091
activatePprof bool
9192
}
@@ -97,6 +98,13 @@ func NewBuilder(addr string) *Builder {
9798
}
9899
}
99100

101+
// PreMiddleware is adding the provided middleware into the Builder.
102+
// Each mdw added here, will be executed before the router.
103+
func (b *Builder) PreMiddleware(mdw echo.MiddlewareFunc) *Builder {
104+
b.preMDWs = append(b.preMDWs, mdw)
105+
return b
106+
}
107+
100108
// Middleware is adding the provided middleware into the Builder
101109
// Order matters, add the middleware in the order you would like to see them started.
102110
func (b *Builder) Middleware(mdw echo.MiddlewareFunc) *Builder {
@@ -205,6 +213,7 @@ func (b *Builder) build() (*server, error) {
205213
apis: b.apis,
206214
e: e,
207215
mdws: b.mdws,
216+
preMDWs: b.preMDWs,
208217
shutdownTimeout: 30 * time.Second,
209218
activatePprof: b.activatePprof,
210219
}, nil
@@ -216,6 +225,7 @@ type server struct {
216225
apis []Register
217226
e *echo.Echo
218227
mdws []echo.MiddlewareFunc
228+
preMDWs []echo.MiddlewareFunc
219229
shutdownTimeout time.Duration
220230
activatePprof bool
221231
}
@@ -228,6 +238,9 @@ func (s *server) Initialize() error {
228238
// init global middleware
229239
// Remove trailing slash middleware a trailing slash from the request URI
230240
s.e.Pre(middleware.RemoveTrailingSlash())
241+
for _, p := range s.preMDWs {
242+
s.e.Pre(p)
243+
}
231244
for _, mdw := range s.mdws {
232245
s.e.Use(mdw)
233246
}

0 commit comments

Comments
 (0)