image.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package image // import "github.com/docker/docker/api/server/router/image"
  2. import (
  3. "github.com/docker/docker/api/server/router"
  4. "github.com/docker/docker/image"
  5. "github.com/docker/docker/layer"
  6. "github.com/docker/docker/reference"
  7. )
  8. // imageRouter is a router to talk with the image controller
  9. type imageRouter struct {
  10. backend Backend
  11. searcher Searcher
  12. referenceBackend reference.Store
  13. imageStore image.Store
  14. layerStore layer.Store
  15. routes []router.Route
  16. }
  17. // NewRouter initializes a new image router
  18. func NewRouter(backend Backend, searcher Searcher, referenceBackend reference.Store, imageStore image.Store, layerStore layer.Store) router.Router {
  19. ir := &imageRouter{
  20. backend: backend,
  21. searcher: searcher,
  22. referenceBackend: referenceBackend,
  23. imageStore: imageStore,
  24. layerStore: layerStore,
  25. }
  26. ir.initRoutes()
  27. return ir
  28. }
  29. // Routes returns the available routes to the image controller
  30. func (ir *imageRouter) Routes() []router.Route {
  31. return ir.routes
  32. }
  33. // initRoutes initializes the routes in the image router
  34. func (ir *imageRouter) initRoutes() {
  35. ir.routes = []router.Route{
  36. // GET
  37. router.NewGetRoute("/images/json", ir.getImagesJSON),
  38. router.NewGetRoute("/images/search", ir.getImagesSearch),
  39. router.NewGetRoute("/images/get", ir.getImagesGet),
  40. router.NewGetRoute("/images/{name:.*}/get", ir.getImagesGet),
  41. router.NewGetRoute("/images/{name:.*}/history", ir.getImagesHistory),
  42. router.NewGetRoute("/images/{name:.*}/json", ir.getImagesByName),
  43. // POST
  44. router.NewPostRoute("/images/load", ir.postImagesLoad),
  45. router.NewPostRoute("/images/create", ir.postImagesCreate),
  46. router.NewPostRoute("/images/{name:.*}/push", ir.postImagesPush),
  47. router.NewPostRoute("/images/{name:.*}/tag", ir.postImagesTag),
  48. router.NewPostRoute("/images/prune", ir.postImagesPrune),
  49. // DELETE
  50. router.NewDeleteRoute("/images/{name:.*}", ir.deleteImages),
  51. }
  52. }