|
|
|
@ -44,7 +44,7 @@ type RouteRegister interface { |
|
|
|
|
|
|
|
|
|
// Register iterates over all routes added to the RouteRegister
|
|
|
|
|
// and add them to the `Router` pass as an parameter.
|
|
|
|
|
Register(Router) |
|
|
|
|
Register(Router, ...RegisterNamedMiddleware) |
|
|
|
|
|
|
|
|
|
// Reset resets the route register.
|
|
|
|
|
Reset() |
|
|
|
@ -118,8 +118,13 @@ func (rr *RouteRegisterImpl) Group(pattern string, fn func(rr RouteRegister), ha |
|
|
|
|
rr.groups = append(rr.groups, group) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (rr *RouteRegisterImpl) Register(router Router) { |
|
|
|
|
func (rr *RouteRegisterImpl) Register(router Router, namedMiddlewares ...RegisterNamedMiddleware) { |
|
|
|
|
for _, r := range rr.routes { |
|
|
|
|
// Add global named middlewares
|
|
|
|
|
for i, m := range namedMiddlewares { |
|
|
|
|
r.handlers = insertHandler(r.handlers, len(rr.namedMiddlewares)+i, m(r.pattern)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GET requests have to be added to macaron routing using Get()
|
|
|
|
|
// Otherwise HEAD requests will not be allowed.
|
|
|
|
|
// https://github.com/go-macaron/macaron/blob/a325110f8b392bce3e5cdeb8c44bf98078ada3be/router.go#L198
|
|
|
|
@ -131,7 +136,7 @@ func (rr *RouteRegisterImpl) Register(router Router) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, g := range rr.groups { |
|
|
|
|
g.Register(router) |
|
|
|
|
g.Register(router, namedMiddlewares...) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -159,6 +164,15 @@ func (rr *RouteRegisterImpl) route(pattern, method string, handlers ...web.Handl |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func insertHandler(a []web.Handler, index int, value web.Handler) []web.Handler { |
|
|
|
|
if len(a) == index { |
|
|
|
|
return append(a, value) |
|
|
|
|
} |
|
|
|
|
a = append(a[:index+1], a[index:]...) |
|
|
|
|
a[index] = value |
|
|
|
|
return a |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (rr *RouteRegisterImpl) Get(pattern string, handlers ...web.Handler) { |
|
|
|
|
rr.route(pattern, http.MethodGet, handlers...) |
|
|
|
|
} |
|
|
|
|