initial work on registry client

pull/26/head
Karolis Rusenas 2017-07-01 13:03:00 +01:00
parent a9cfe6c294
commit dfca156961
1 changed files with 72 additions and 0 deletions

72
registry/registry.go Normal file
View File

@ -0,0 +1,72 @@
package registry
import (
"errors"
// "github.com/docker/distribution/digest"
// "github.com/docker/distribution/manifest"
// "github.com/docker/libtrust"
"github.com/rusenask/docker-registry-client/registry"
)
// errors
var (
ErrTagNotSupplied = errors.New("tag not supplied")
)
type Repository struct {
Name string
Tags []string
}
type Client interface {
}
func New() *DefaultClient {
return &DefaultClient{}
}
type DefaultClient struct {
}
type Opts struct {
Registry, Name, Tag string
Username, Password string // if "" - anonymous
}
// Get - get repository
func (c *DefaultClient) Get(opts Opts) (*Repository, error) {
repo := &Repository{}
hub, err := registry.New(opts.Registry, opts.Username, opts.Password)
if err != nil {
return nil, err
}
tags, err := hub.Tags(opts.Name)
if err != nil {
return nil, err
}
repo.Tags = tags
return repo, nil
}
// Digest - get digest for repo
func (c *DefaultClient) Digest(opts Opts) (digest string, err error) {
if opts.Tag == "" {
return "", ErrTagNotSupplied
}
hub, err := registry.New(opts.Registry, opts.Username, opts.Password)
if err != nil {
return
}
manifestDigest, err := hub.ManifestDigest(opts.Name, opts.Tag)
if err != nil {
return
}
return manifestDigest.String(), nil
}