mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-28 11:46:20 -04:00
fix v2 manifest fetch
Signed-off-by: Jess Frazelle <acidburn@google.com>
This commit is contained in:
parent
f21664c81a
commit
cd61a71fad
4 changed files with 19 additions and 10 deletions
|
@ -19,7 +19,7 @@ func (r *Registry) Catalog(u string) ([]string, error) {
|
|||
r.Logf("registry.catalog url=%s", uri)
|
||||
|
||||
var response catalogResponse
|
||||
h, err := r.getJSON(uri, &response)
|
||||
h, err := r.getJSON(uri, &response, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package registry
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/docker/distribution/manifest/schema1"
|
||||
|
@ -9,11 +10,11 @@ import (
|
|||
|
||||
// Manifest returns the manifest for a specific repository:tag.
|
||||
func (r *Registry) Manifest(repository, ref string) (interface{}, error) {
|
||||
url := r.url("/v2/%s/manifests/%s", repository, ref)
|
||||
r.Logf("registry.manifests url=%s repository=%s ref=%s", url, repository, ref)
|
||||
uri := r.url("/v2/%s/manifests/%s", repository, url.PathEscape(ref))
|
||||
r.Logf("registry.manifests uri=%s repository=%s ref=%s", uri, repository, ref)
|
||||
|
||||
var m schema2.Manifest
|
||||
h, err := r.getJSON(url, &m)
|
||||
h, err := r.getJSON(uri, &m, true)
|
||||
if err != nil {
|
||||
return m, err
|
||||
}
|
||||
|
@ -32,11 +33,11 @@ func (r *Registry) Manifest(repository, ref string) (interface{}, error) {
|
|||
|
||||
// ManifestV1 gets the registry v1 manifest.
|
||||
func (r *Registry) ManifestV1(repository, ref string) (schema1.SignedManifest, error) {
|
||||
url := r.url("/v2/%s/manifests/%s", repository, ref)
|
||||
r.Logf("registry.manifests url=%s repository=%s ref=%s", url, repository, ref)
|
||||
uri := r.url("/v2/%s/manifests/%s", repository, url.PathEscape(ref))
|
||||
r.Logf("registry.manifests uri=%s repository=%s ref=%s", uri, repository, ref)
|
||||
|
||||
var m schema1.SignedManifest
|
||||
if _, err := r.getJSON(url, &m); err != nil {
|
||||
if _, err := r.getJSON(uri, &m, false); err != nil {
|
||||
return m, err
|
||||
}
|
||||
|
||||
|
|
|
@ -99,8 +99,16 @@ func (r *Registry) url(pathTemplate string, args ...interface{}) string {
|
|||
return url
|
||||
}
|
||||
|
||||
func (r *Registry) getJSON(url string, response interface{}) (http.Header, error) {
|
||||
resp, err := r.Client.Get(url)
|
||||
func (r *Registry) getJSON(url string, response interface{}, addV2Header bool) (http.Header, error) {
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if addV2Header {
|
||||
req.Header.Add("Accept", "application/vnd.docker.distribution.manifest.v2+json")
|
||||
req.Header.Add("Accept", "application/vnd.docker.distribution.manifest.list.v2+json")
|
||||
}
|
||||
resp, err := r.Client.Do(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ func (r *Registry) Tags(repository string) ([]string, error) {
|
|||
r.Logf("registry.tags url=%s repository=%s", url, repository)
|
||||
|
||||
var response tagsResponse
|
||||
if _, err := r.getJSON(url, &response); err != nil {
|
||||
if _, err := r.getJSON(url, &response, false); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue