Skip to content

Commit e28f3d7

Browse files
committed
build middleware methods
1 parent 8e4ed70 commit e28f3d7

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

middleware.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package routing
2+
3+
type MiddlewareFunc func(handler Handler) Handler
4+
5+
type Middleware interface {
6+
Middleware(handler Handler) Handler
7+
Handle(ctx *Context, next Handler) error
8+
}
9+
10+
func (m MiddlewareFunc) Middleware(handler Handler) Handler {
11+
return m(handler)
12+
}
13+
14+
func (r *Router) Use(method string, middlewares ...interface{}) {
15+
for _, middleware := range middlewares {
16+
if middlewareFunc, ok := middleware.(MiddlewareFunc); ok {
17+
r.middlewares[method] = append(r.middlewares[method], middlewareFunc)
18+
} else if middleware, ok := middleware.(Middleware); ok {
19+
r.middlewares[method] = append(r.middlewares[method], middleware)
20+
}
21+
}
22+
}
23+
24+
func (m MiddlewareFunc) Handle(ctx *Context, next Handler) error {
25+
h := m(next)
26+
return h(ctx)
27+
}

0 commit comments

Comments
 (0)