github.com/Heebron/moby@v0.0.0-20221111184709-6eab4f55faf7/api/server/router/image/image.go (about)

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