router: added middlewares
This commit is contained in:
+11
-2
@@ -6,6 +6,8 @@ import (
|
||||
"regexp"
|
||||
)
|
||||
|
||||
type MiddlewareFunc func(next Handler) Handler
|
||||
|
||||
type Handler interface {
|
||||
ServeHTTP(rctx *Context)
|
||||
}
|
||||
@@ -17,15 +19,22 @@ func (handlerFunc HandlerFunc) ServeHTTP(rctx *Context) {
|
||||
}
|
||||
|
||||
type Router struct {
|
||||
headHandler Handler
|
||||
routeHandler *Selector
|
||||
}
|
||||
|
||||
func NewRouter() *Router {
|
||||
selector := NewSelector()
|
||||
return &Router{
|
||||
routeHandler: NewSelector(),
|
||||
routeHandler: selector,
|
||||
headHandler: selector,
|
||||
}
|
||||
}
|
||||
|
||||
func (rout *Router) Use(mwFunc MiddlewareFunc) {
|
||||
rout.headHandler = mwFunc(rout.headHandler)
|
||||
}
|
||||
|
||||
func (rout *Router) Selector() *Selector {
|
||||
return rout.routeHandler
|
||||
}
|
||||
@@ -60,7 +69,7 @@ func (rout *Router) Delete(path string, handlerFunc HandlerFunc) {
|
||||
|
||||
func (rout *Router) ServeHTTP(writer http.ResponseWriter, req *http.Request) {
|
||||
rctx := NewContext(writer, req)
|
||||
rout.routeHandler.ServeHTTP(rctx)
|
||||
rout.headHandler.ServeHTTP(rctx)
|
||||
}
|
||||
|
||||
func (rout *Router) NotFound(handlerFunc HandlerFunc) {
|
||||
|
||||
Reference in New Issue
Block a user