registry/httpfactory.go
752dd707
 package registry
 
 import (
 	"runtime"
 
 	"github.com/docker/docker/dockerversion"
 	"github.com/docker/docker/pkg/parsers/kernel"
 	"github.com/docker/docker/utils"
 )
 
 func HTTPRequestFactory(metaHeaders map[string][]string) *utils.HTTPRequestFactory {
 	// FIXME: this replicates the 'info' job.
 	httpVersion := make([]utils.VersionInfo, 0, 4)
 	httpVersion = append(httpVersion, &simpleVersionInfo{"docker", dockerversion.VERSION})
 	httpVersion = append(httpVersion, &simpleVersionInfo{"go", runtime.Version()})
 	httpVersion = append(httpVersion, &simpleVersionInfo{"git-commit", dockerversion.GITCOMMIT})
 	if kernelVersion, err := kernel.GetKernelVersion(); err == nil {
 		httpVersion = append(httpVersion, &simpleVersionInfo{"kernel", kernelVersion.String()})
 	}
 	httpVersion = append(httpVersion, &simpleVersionInfo{"os", runtime.GOOS})
 	httpVersion = append(httpVersion, &simpleVersionInfo{"arch", runtime.GOARCH})
 	ud := utils.NewHTTPUserAgentDecorator(httpVersion...)
 	md := &utils.HTTPMetaHeadersDecorator{
 		Headers: metaHeaders,
 	}
 	factory := utils.NewHTTPRequestFactory(ud, md)
 	return factory
 }
 
 // simpleVersionInfo is a simple implementation of
 // the interface VersionInfo, which is used
 // to provide version information for some product,
 // component, etc. It stores the product name and the version
 // in string and returns them on calls to Name() and Version().
 type simpleVersionInfo struct {
 	name    string
 	version string
 }
 
 func (v *simpleVersionInfo) Name() string {
 	return v.name
 }
 
 func (v *simpleVersionInfo) Version() string {
 	return v.version
 }