2014-12-12 07:10:18 +01:00
|
|
|
package v2
|
2014-11-08 01:08:14 +01:00
|
|
|
|
2014-12-19 03:21:57 +01:00
|
|
|
import "github.com/gorilla/mux"
|
2014-11-08 01:08:14 +01:00
|
|
|
|
2014-12-12 06:08:23 +01:00
|
|
|
// 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.
|
2014-11-08 01:08:14 +01:00
|
|
|
const (
|
2014-12-12 06:08:23 +01:00
|
|
|
RouteNameBase = "base"
|
|
|
|
RouteNameManifest = "manifest"
|
|
|
|
RouteNameTags = "tags"
|
|
|
|
RouteNameBlob = "blob"
|
|
|
|
RouteNameBlobUpload = "blob-upload"
|
|
|
|
RouteNameBlobUploadChunk = "blob-upload-chunk"
|
2014-11-08 01:08:14 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
var allEndpoints = []string{
|
2014-12-12 06:08:23 +01:00
|
|
|
RouteNameManifest,
|
|
|
|
RouteNameTags,
|
|
|
|
RouteNameBlob,
|
|
|
|
RouteNameBlobUpload,
|
|
|
|
RouteNameBlobUploadChunk,
|
2014-11-08 01:08:14 +01:00
|
|
|
}
|
|
|
|
|
2014-12-12 06:08:23 +01:00
|
|
|
// 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 {
|
2015-02-24 23:59:01 +01:00
|
|
|
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)
|
2014-11-08 01:08:14 +01:00
|
|
|
|
2014-12-19 03:21:57 +01:00
|
|
|
for _, descriptor := range routeDescriptors {
|
|
|
|
router.Path(descriptor.Path).Name(descriptor.Name)
|
|
|
|
}
|
2014-11-08 01:08:14 +01:00
|
|
|
|
2015-02-24 23:59:01 +01:00
|
|
|
return rootRouter
|
2014-11-08 01:08:14 +01:00
|
|
|
}
|