Porting registry to use urls package
This simply moves the registry app to be using the urls package and its exported route names. This supports locking down exported route definitions for use in client packages.master
parent
da19114d1a
commit
5b13e95511
15
app.go
15
app.go
|
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/docker/docker-registry/api/urls"
|
||||
"github.com/docker/docker-registry/storagedriver"
|
||||
"github.com/docker/docker-registry/storagedriver/factory"
|
||||
|
||||
|
|
@ -35,18 +36,18 @@ type App struct {
|
|||
func NewApp(configuration configuration.Configuration) *App {
|
||||
app := &App{
|
||||
Config: configuration,
|
||||
router: v2APIRouter(),
|
||||
router: urls.Router(),
|
||||
}
|
||||
|
||||
// Register the handler dispatchers.
|
||||
app.register(routeNameBase, func(ctx *Context, r *http.Request) http.Handler {
|
||||
app.register(urls.RouteNameBase, func(ctx *Context, r *http.Request) http.Handler {
|
||||
return http.HandlerFunc(apiBase)
|
||||
})
|
||||
app.register(routeNameImageManifest, imageManifestDispatcher)
|
||||
app.register(routeNameTags, tagsDispatcher)
|
||||
app.register(routeNameBlob, layerDispatcher)
|
||||
app.register(routeNameBlobUpload, layerUploadDispatcher)
|
||||
app.register(routeNameBlobUploadResume, layerUploadDispatcher)
|
||||
app.register(urls.RouteNameManifest, imageManifestDispatcher)
|
||||
app.register(urls.RouteNameTags, tagsDispatcher)
|
||||
app.register(urls.RouteNameBlob, layerDispatcher)
|
||||
app.register(urls.RouteNameBlobUpload, layerUploadDispatcher)
|
||||
app.register(urls.RouteNameBlobUploadChunk, layerUploadDispatcher)
|
||||
|
||||
driver, err := factory.Create(configuration.Storage.Type(), configuration.Storage.Parameters())
|
||||
|
||||
|
|
|
|||
15
app_test.go
15
app_test.go
|
|
@ -6,6 +6,7 @@ import (
|
|||
"net/url"
|
||||
"testing"
|
||||
|
||||
"github.com/docker/docker-registry/api/urls"
|
||||
"github.com/docker/docker-registry/configuration"
|
||||
)
|
||||
|
||||
|
|
@ -16,10 +17,10 @@ import (
|
|||
func TestAppDispatcher(t *testing.T) {
|
||||
app := &App{
|
||||
Config: configuration.Configuration{},
|
||||
router: v2APIRouter(),
|
||||
router: urls.Router(),
|
||||
}
|
||||
server := httptest.NewServer(app)
|
||||
router := v2APIRouter()
|
||||
router := urls.Router()
|
||||
|
||||
serverURL, err := url.Parse(server.URL)
|
||||
if err != nil {
|
||||
|
|
@ -71,33 +72,33 @@ func TestAppDispatcher(t *testing.T) {
|
|||
vars []string
|
||||
}{
|
||||
{
|
||||
endpoint: routeNameImageManifest,
|
||||
endpoint: urls.RouteNameManifest,
|
||||
vars: []string{
|
||||
"name", "foo/bar",
|
||||
"tag", "sometag",
|
||||
},
|
||||
},
|
||||
{
|
||||
endpoint: routeNameTags,
|
||||
endpoint: urls.RouteNameTags,
|
||||
vars: []string{
|
||||
"name", "foo/bar",
|
||||
},
|
||||
},
|
||||
{
|
||||
endpoint: routeNameBlob,
|
||||
endpoint: urls.RouteNameBlob,
|
||||
vars: []string{
|
||||
"name", "foo/bar",
|
||||
"digest", "tarsum.v1+bogus:abcdef0123456789",
|
||||
},
|
||||
},
|
||||
{
|
||||
endpoint: routeNameBlobUpload,
|
||||
endpoint: urls.RouteNameBlobUpload,
|
||||
vars: []string{
|
||||
"name", "foo/bar",
|
||||
},
|
||||
},
|
||||
{
|
||||
endpoint: routeNameBlobUploadResume,
|
||||
endpoint: urls.RouteNameBlobUploadChunk,
|
||||
vars: []string{
|
||||
"name", "foo/bar",
|
||||
"uuid", "theuuid",
|
||||
|
|
|
|||
15
urls.go
15
urls.go
|
|
@ -4,6 +4,7 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"github.com/docker/docker-registry/api/urls"
|
||||
"github.com/docker/docker-registry/digest"
|
||||
"github.com/docker/docker-registry/storage"
|
||||
"github.com/gorilla/mux"
|
||||
|
|
@ -17,7 +18,7 @@ type urlBuilder struct {
|
|||
func newURLBuilder(root *url.URL) *urlBuilder {
|
||||
return &urlBuilder{
|
||||
url: root,
|
||||
router: v2APIRouter(),
|
||||
router: urls.Router(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -40,7 +41,7 @@ func newURLBuilderFromString(root string) (*urlBuilder, error) {
|
|||
}
|
||||
|
||||
func (ub *urlBuilder) buildBaseURL() (string, error) {
|
||||
route := clonedRoute(ub.router, routeNameBase)
|
||||
route := clonedRoute(ub.router, urls.RouteNameBase)
|
||||
|
||||
baseURL, err := route.
|
||||
Schemes(ub.url.Scheme).
|
||||
|
|
@ -54,7 +55,7 @@ func (ub *urlBuilder) buildBaseURL() (string, error) {
|
|||
}
|
||||
|
||||
func (ub *urlBuilder) buildTagsURL(name string) (string, error) {
|
||||
route := clonedRoute(ub.router, routeNameTags)
|
||||
route := clonedRoute(ub.router, urls.RouteNameTags)
|
||||
|
||||
tagsURL, err := route.
|
||||
Schemes(ub.url.Scheme).
|
||||
|
|
@ -72,7 +73,7 @@ func (ub *urlBuilder) forManifest(m *storage.Manifest) (string, error) {
|
|||
}
|
||||
|
||||
func (ub *urlBuilder) buildManifestURL(name, tag string) (string, error) {
|
||||
route := clonedRoute(ub.router, routeNameImageManifest)
|
||||
route := clonedRoute(ub.router, urls.RouteNameManifest)
|
||||
|
||||
manifestURL, err := route.
|
||||
Schemes(ub.url.Scheme).
|
||||
|
|
@ -90,7 +91,7 @@ func (ub *urlBuilder) forLayer(l storage.Layer) (string, error) {
|
|||
}
|
||||
|
||||
func (ub *urlBuilder) buildLayerURL(name string, dgst digest.Digest) (string, error) {
|
||||
route := clonedRoute(ub.router, routeNameBlob)
|
||||
route := clonedRoute(ub.router, urls.RouteNameBlob)
|
||||
|
||||
layerURL, err := route.
|
||||
Schemes(ub.url.Scheme).
|
||||
|
|
@ -104,7 +105,7 @@ func (ub *urlBuilder) buildLayerURL(name string, dgst digest.Digest) (string, er
|
|||
}
|
||||
|
||||
func (ub *urlBuilder) buildLayerUploadURL(name string) (string, error) {
|
||||
route := clonedRoute(ub.router, routeNameBlobUpload)
|
||||
route := clonedRoute(ub.router, urls.RouteNameBlobUpload)
|
||||
|
||||
uploadURL, err := route.
|
||||
Schemes(ub.url.Scheme).
|
||||
|
|
@ -122,7 +123,7 @@ func (ub *urlBuilder) forLayerUpload(layerUpload storage.LayerUpload) (string, e
|
|||
}
|
||||
|
||||
func (ub *urlBuilder) buildLayerUploadResumeURL(name, uuid string, values ...url.Values) (string, error) {
|
||||
route := clonedRoute(ub.router, routeNameBlobUploadResume)
|
||||
route := clonedRoute(ub.router, urls.RouteNameBlobUploadChunk)
|
||||
|
||||
uploadURL, err := route.
|
||||
Schemes(ub.url.Scheme).
|
||||
|
|
|
|||
Loading…
Reference in New Issue