This makes separating middlewares from the core api easier. As an example, the authorization middleware is moved to it's own package. Initialize all static middlewares when the server is created, reducing allocations every time a route is wrapper with the middlewares. Signed-off-by: David Calavera <david.calavera@gmail.com> Upstream-commit: 8d3467626ee26cad48ad84f2181552dce7afccb6 Component: engine
25 lines
682 B
Go
25 lines
682 B
Go
package server
|
|
|
|
import (
|
|
"github.com/Sirupsen/logrus"
|
|
"github.com/docker/docker/api/server/httputils"
|
|
"github.com/docker/docker/api/server/middleware"
|
|
)
|
|
|
|
// handleWithGlobalMiddlwares wraps the handler function for a request with
|
|
// the server's global middlewares. The order of the middlewares is backwards,
|
|
// meaning that the first in the list will be evaluated last.
|
|
func (s *Server) handleWithGlobalMiddlewares(handler httputils.APIFunc) httputils.APIFunc {
|
|
next := handler
|
|
|
|
for _, m := range s.middlewares {
|
|
next = m.WrapHandler(next)
|
|
}
|
|
|
|
if s.cfg.Logging && logrus.GetLevel() == logrus.DebugLevel {
|
|
next = middleware.DebugRequestMiddleware(next)
|
|
}
|
|
|
|
return next
|
|
}
|