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