123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- package local
- import (
- "github.com/docker/docker/api/server/httputils"
- dkrouter "github.com/docker/docker/api/server/router"
- "github.com/docker/docker/daemon"
- )
- // router is a docker router that talks with the local docker daemon.
- type router struct {
- daemon *daemon.Daemon
- routes []dkrouter.Route
- }
- // localRoute defines an individual API route to connect with the docker daemon.
- // It implements router.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 router for the reouter
- func NewRoute(method, path string, handler httputils.APIFunc) dkrouter.Route {
- return localRoute{method, path, handler}
- }
- // NewGetRoute initializes a new route with the http method GET.
- func NewGetRoute(path string, handler httputils.APIFunc) dkrouter.Route {
- return NewRoute("GET", path, handler)
- }
- // NewPostRoute initializes a new route with the http method POST.
- func NewPostRoute(path string, handler httputils.APIFunc) dkrouter.Route {
- return NewRoute("POST", path, handler)
- }
- // NewPutRoute initializes a new route with the http method PUT.
- func NewPutRoute(path string, handler httputils.APIFunc) dkrouter.Route {
- return NewRoute("PUT", path, handler)
- }
- // NewDeleteRoute initializes a new route with the http method DELETE.
- func NewDeleteRoute(path string, handler httputils.APIFunc) dkrouter.Route {
- return NewRoute("DELETE", path, handler)
- }
- // NewOptionsRoute initializes a new route with the http method OPTIONS
- func NewOptionsRoute(path string, handler httputils.APIFunc) dkrouter.Route {
- return NewRoute("OPTIONS", path, handler)
- }
- // NewHeadRoute initializes a new route with the http method HEAD.
- func NewHeadRoute(path string, handler httputils.APIFunc) dkrouter.Route {
- return NewRoute("HEAD", path, handler)
- }
- // NewRouter initializes a local router with a new daemon.
- func NewRouter(daemon *daemon.Daemon) dkrouter.Router {
- r := &router{
- daemon: daemon,
- }
- r.initRoutes()
- return r
- }
- // Routes returns the list of routes registered in the router.
- func (r *router) Routes() []dkrouter.Route {
- return r.routes
- }
- // initRoutes initializes the routes in this router
- func (r *router) initRoutes() {
- r.routes = []dkrouter.Route{
- // OPTIONS
- // GET
- NewGetRoute("/images/json", r.getImagesJSON),
- NewGetRoute("/images/search", r.getImagesSearch),
- NewGetRoute("/images/get", r.getImagesGet),
- NewGetRoute("/images/{name:.*}/get", r.getImagesGet),
- NewGetRoute("/images/{name:.*}/history", r.getImagesHistory),
- NewGetRoute("/images/{name:.*}/json", r.getImagesByName),
- // POST
- NewPostRoute("/commit", r.postCommit),
- NewPostRoute("/images/create", r.postImagesCreate),
- NewPostRoute("/images/load", r.postImagesLoad),
- NewPostRoute("/images/{name:.*}/push", r.postImagesPush),
- NewPostRoute("/images/{name:.*}/tag", r.postImagesTag),
- // DELETE
- NewDeleteRoute("/images/{name:.*}", r.deleteImages),
- }
- }
|