mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-28 11:46:20 -04:00
1af74c42c2
Signed-off-by: Jess Frazelle <me@jessfraz.com>
35 lines
926 B
Go
35 lines
926 B
Go
package registry
|
|
|
|
import (
|
|
"github.com/docker/distribution/manifest/schema1"
|
|
"github.com/docker/distribution/manifest/schema2"
|
|
)
|
|
|
|
// 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)
|
|
|
|
var m schema2.Manifest
|
|
if err := r.getJSON(url, &m); err != nil {
|
|
return m, err
|
|
}
|
|
|
|
if m.Versioned.SchemaVersion == 1 {
|
|
return r.v1Manifest(repository, ref)
|
|
}
|
|
|
|
return m, nil
|
|
}
|
|
|
|
func (r *Registry) v1Manifest(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)
|
|
|
|
var m schema1.SignedManifest
|
|
if err := r.getJSON(url, &m); err != nil {
|
|
return m, err
|
|
}
|
|
|
|
return m, nil
|
|
}
|