registry/api/v2/routes.go (53 lines of code) (raw):

package v2 import "github.com/gorilla/mux" // The following are definitions of the name under which all V2 routes are // registered. These symbols can be used to look up a route based on the name. const ( RouteNameBase = "base" RouteNameManifest = "manifest" RouteNameTags = "tags" RouteNameBlob = "blob" RouteNameBlobUpload = "blob-upload" RouteNameBlobUploadChunk = "blob-upload-chunk" RouteNameCatalog = "catalog" RoutePathBase = "/v2/" RoutePathManifest = "/v2/{name}/manifests/{reference}" RoutePathTags = "/v2/{name}/tags/list" RoutePathBlob = "/v2/{name}/blobs/{digest}" RoutePathBlobUpload = "/v2/{name}/blobs/uploads/" RoutePathBlobUploadChunk = "/v2/{name}/blobs/uploads/{uuid}" RoutePathCatalog = "/v2/_catalog" ) func RoutePath(routeName string) string { switch routeName { case RouteNameBase: return RoutePathBase case RouteNameManifest: return RoutePathManifest case RouteNameTags: return RoutePathTags case RouteNameBlob: return RoutePathBlob case RouteNameBlobUpload: return RoutePathBlobUpload case RouteNameBlobUploadChunk: return RoutePathBlobUploadChunk case RouteNameCatalog: return RoutePathCatalog default: return "" } } // Router builds a gorilla router with named routes for the various API // methods. This can be used directly by both server implementations and // clients. func Router() *mux.Router { return RouterWithPrefix("") } // RouterWithPrefix builds a gorilla router with a configured prefix // on all routes. func RouterWithPrefix(prefix string) *mux.Router { rootRouter := mux.NewRouter() router := rootRouter if prefix != "" { router = router.PathPrefix(prefix).Subrouter() } router.StrictSlash(true) for _, descriptor := range routeDescriptors { router.Path(descriptor.Path).Name(descriptor.Name) } return rootRouter }