forked from TrueCloudLab/distribution
47 lines
1.5 KiB
Go
47 lines
1.5 KiB
Go
|
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
|
||
|
}
|