github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/docker_runner/docker_metadata_fetcher/docker_session_factory.go (about) 1 package docker_metadata_fetcher 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/docker/docker/cliconfig" 8 "github.com/docker/docker/registry" 9 ) 10 11 //go:generate counterfeiter -o fake_docker_session/fake_docker_session.go . DockerSession 12 type DockerSession interface { 13 GetRepositoryData(remote string) (*registry.RepositoryData, error) 14 GetRemoteTags(registries []string, repository string) (map[string]string, error) 15 GetRemoteImageJSON(imgID, registry string) ([]byte, int, error) 16 } 17 18 //go:generate counterfeiter -o fake_docker_session/fake_docker_session_factory.go . DockerSessionFactory 19 type DockerSessionFactory interface { 20 MakeSession(reposName string, allowInsecure bool) (DockerSession, error) 21 } 22 23 type dockerSessionFactory struct{} 24 25 func NewDockerSessionFactory() *dockerSessionFactory { 26 return &dockerSessionFactory{} 27 } 28 29 func (factory *dockerSessionFactory) MakeSession(reposName string, allowInsecure bool) (DockerSession, error) { 30 repositoryInfo, err := registry.ParseRepositoryInfo(reposName) 31 if err != nil { 32 return nil, fmt.Errorf("Error resolving Docker repository name:\n" + err.Error()) 33 } 34 35 if allowInsecure { 36 repositoryInfo.Index.Secure = false 37 } 38 endpoint, err := registry.NewEndpoint(repositoryInfo.Index, nil, registry.APIVersionUnknown) 39 if err != nil { 40 return nil, fmt.Errorf("Error Connecting to Docker registry:\n" + err.Error()) 41 } 42 authConfig := &cliconfig.AuthConfig{} 43 session, error := registry.NewSession(http.DefaultClient, authConfig, endpoint) 44 return session, error 45 }