12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package router // import "github.com/docker/docker/api/server/router"
- import (
- "net/http"
- "github.com/docker/docker/api/server/httputils"
- )
- // RouteWrapper wraps a route with extra functionality.
- // It is passed in when creating a new route.
- type RouteWrapper func(r Route) Route
- // localRoute defines an individual API route to connect
- // with the docker daemon. It implements Route.
- type localRoute struct {
- method string
- path string
- handler httputils.APIFunc
- }
- // Handler returns the APIFunc to let the server wrap it in middlewares.
- func (l localRoute) Handler() httputils.APIFunc {
- return l.handler
- }
- // Method returns the http method that the route responds to.
- func (l localRoute) Method() string {
- return l.method
- }
- // Path returns the subpath where the route responds to.
- func (l localRoute) Path() string {
- return l.path
- }
- // NewRoute initializes a new local route for the router.
- func NewRoute(method, path string, handler httputils.APIFunc, opts ...RouteWrapper) Route {
- var r Route = localRoute{method, path, handler}
- for _, o := range opts {
- r = o(r)
- }
- return r
- }
- // NewGetRoute initializes a new route with the http method GET.
- func NewGetRoute(path string, handler httputils.APIFunc, opts ...RouteWrapper) Route {
- return NewRoute(http.MethodGet, path, handler, opts...)
- }
- // NewPostRoute initializes a new route with the http method POST.
- func NewPostRoute(path string, handler httputils.APIFunc, opts ...RouteWrapper) Route {
- return NewRoute(http.MethodPost, path, handler, opts...)
- }
- // NewPutRoute initializes a new route with the http method PUT.
- func NewPutRoute(path string, handler httputils.APIFunc, opts ...RouteWrapper) Route {
- return NewRoute(http.MethodPut, path, handler, opts...)
- }
- // NewDeleteRoute initializes a new route with the http method DELETE.
- func NewDeleteRoute(path string, handler httputils.APIFunc, opts ...RouteWrapper) Route {
- return NewRoute(http.MethodDelete, path, handler, opts...)
- }
- // NewOptionsRoute initializes a new route with the http method OPTIONS.
- func NewOptionsRoute(path string, handler httputils.APIFunc, opts ...RouteWrapper) Route {
- return NewRoute(http.MethodOptions, path, handler, opts...)
- }
- // NewHeadRoute initializes a new route with the http method HEAD.
- func NewHeadRoute(path string, handler httputils.APIFunc, opts ...RouteWrapper) Route {
- return NewRoute(http.MethodHead, path, handler, opts...)
- }
|