package router // ToMiddleware converts the given handler to a Middleware. func ToMiddleware(handler func(next Handler) Handler) Middleware { return func(next HandlerFunc) HandlerFunc { return handler(next).Handle } } // WithMiddlewares adds given middlewares to given routes. func WithMiddlewares(ms []Middleware, rs ...Route) []Route { for i := len(ms) - 1; i >= 0; i-- { rs = WithMiddleware(ms[i], rs...) } return rs } // WithMiddleware adds given middleware to given route. func WithMiddleware(middleware Middleware, rs ...Route) []Route { routes := make([]Route, len(rs)) for i := range rs { route := rs[i] routes[i] = Route{ Matches: route.Matches, Handler: middleware(route.Handler), } } return routes }