Browse code

Server now use request factory

Nan Monnand Deng authored on 2013/08/02 16:23:46
Showing 2 changed files
... ...
@@ -52,9 +52,9 @@ func (v *simpleVersionInfo) Version() string {
52 52
 // docker, go, git-commit (of the docker) and the host's kernel.
53 53
 //
54 54
 // Such information will be used on call to NewRegistry().
55
-func (srv *Server) versionInfos() []registry.VersionInfo {
55
+func (srv *Server) versionInfos() []utils.VersionInfo {
56 56
 	v := srv.DockerVersion()
57
-	ret := make([]registry.VersionInfo, 0, 4)
57
+	ret := make([]utils.VersionInfo, 0, 4)
58 58
 	ret = append(ret, &simpleVersionInfo{"docker", v.Version})
59 59
 
60 60
 	if len(v.GoVersion) > 0 {
... ...
@@ -102,7 +102,7 @@ func (srv *Server) ContainerExport(name string, out io.Writer) error {
102 102
 }
103 103
 
104 104
 func (srv *Server) ImagesSearch(term string) ([]APISearch, error) {
105
-	r, err := registry.NewRegistry(srv.runtime.root, nil, srv.versionInfos()...)
105
+	r, err := registry.NewRegistry(srv.runtime.root, nil, srv.reqFactory)
106 106
 	if err != nil {
107 107
 		return nil, err
108 108
 	}
... ...
@@ -559,7 +559,7 @@ func (srv *Server) poolRemove(kind, key string) error {
559 559
 }
560 560
 
561 561
 func (srv *Server) ImagePull(localName string, tag string, out io.Writer, sf *utils.StreamFormatter, authConfig *auth.AuthConfig) error {
562
-	r, err := registry.NewRegistry(srv.runtime.root, authConfig, srv.versionInfos()...)
562
+	r, err := registry.NewRegistry(srv.runtime.root, authConfig, srv.reqFactory)
563 563
 	if err != nil {
564 564
 		return err
565 565
 	}
... ...
@@ -720,7 +720,7 @@ func (srv *Server) ImagePush(localName string, out io.Writer, sf *utils.StreamFo
720 720
 
721 721
 	out = utils.NewWriteFlusher(out)
722 722
 	img, err := srv.runtime.graph.Get(localName)
723
-	r, err2 := registry.NewRegistry(srv.runtime.root, authConfig, srv.versionInfos()...)
723
+	r, err2 := registry.NewRegistry(srv.runtime.root, authConfig, srv.reqFactory)
724 724
 	if err2 != nil {
725 725
 		return err2
726 726
 	}
... ...
@@ -1164,7 +1164,11 @@ func NewServer(flGraphPath string, autoRestart, enableCors bool, dns ListOpts) (
1164 1164
 		pushingPool: make(map[string]struct{}),
1165 1165
 		events:      make([]utils.JSONMessage, 0, 64), //only keeps the 64 last events
1166 1166
 		listeners:   make(map[string]chan utils.JSONMessage),
1167
+		reqFactory:  nil,
1167 1168
 	}
1169
+	ud := utils.NewHTTPUserAgentDecorator(srv.versionInfos()...)
1170
+	factory := utils.NewHTTPRequestFactory(ud)
1171
+	srv.reqFactory = factory
1168 1172
 	runtime.srv = srv
1169 1173
 	return srv, nil
1170 1174
 }
... ...
@@ -1189,4 +1193,5 @@ type Server struct {
1189 1189
 	pushingPool map[string]struct{}
1190 1190
 	events      []utils.JSONMessage
1191 1191
 	listeners   map[string]chan utils.JSONMessage
1192
+	reqFactory  *utils.HTTPRequestFactory
1192 1193
 }
... ...
@@ -113,6 +113,11 @@ func (self *HTTPRequestFactory) NewRequest(method, urlStr string, body io.Reader
113 113
 	if err != nil {
114 114
 		return nil, err
115 115
 	}
116
+
117
+	// By default, a nil factory should work.
118
+	if self == nil {
119
+		return req, nil
120
+	}
116 121
 	for _, dec := range self.decorators {
117 122
 		req, err = dec.ChangeRequest(req)
118 123
 		if err != nil {