mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #37690 from KimMachineGun/modify-context-key
api/server, dockerversion: modify context key
This commit is contained in:
commit
f94eec2308
4 changed files with 7 additions and 10 deletions
|
@ -12,10 +12,8 @@ import (
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
type contextKey string
|
|
||||||
|
|
||||||
// APIVersionKey is the client's requested API version.
|
// APIVersionKey is the client's requested API version.
|
||||||
const APIVersionKey contextKey = "api-version"
|
type APIVersionKey struct{}
|
||||||
|
|
||||||
// APIFunc is an adapter to allow the use of ordinary functions as Docker API endpoints.
|
// APIFunc is an adapter to allow the use of ordinary functions as Docker API endpoints.
|
||||||
// Any function that has the appropriate signature can be registered as an API endpoint (e.g. getVersion).
|
// Any function that has the appropriate signature can be registered as an API endpoint (e.g. getVersion).
|
||||||
|
@ -83,7 +81,7 @@ func VersionFromContext(ctx context.Context) string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
if val := ctx.Value(APIVersionKey); val != nil {
|
if val := ctx.Value(APIVersionKey{}); val != nil {
|
||||||
return val.(string)
|
return val.(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ func (v VersionMiddleware) WrapHandler(handler func(ctx context.Context, w http.
|
||||||
if versions.GreaterThan(apiVersion, v.defaultVersion) {
|
if versions.GreaterThan(apiVersion, v.defaultVersion) {
|
||||||
return versionUnsupportedError{version: apiVersion, maxVersion: v.defaultVersion}
|
return versionUnsupportedError{version: apiVersion, maxVersion: v.defaultVersion}
|
||||||
}
|
}
|
||||||
ctx = context.WithValue(ctx, httputils.APIVersionKey, apiVersion)
|
ctx = context.WithValue(ctx, httputils.APIVersionKey{}, apiVersion)
|
||||||
return handler(ctx, w, r, vars)
|
return handler(ctx, w, r, vars)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -129,8 +129,7 @@ func (s *Server) makeHTTPHandler(handler httputils.APIFunc) http.HandlerFunc {
|
||||||
|
|
||||||
// use intermediate variable to prevent "should not use basic type
|
// use intermediate variable to prevent "should not use basic type
|
||||||
// string as key in context.WithValue" golint errors
|
// string as key in context.WithValue" golint errors
|
||||||
var ki interface{} = dockerversion.UAStringKey
|
ctx := context.WithValue(context.Background(), dockerversion.UAStringKey{}, r.Header.Get("User-Agent"))
|
||||||
ctx := context.WithValue(context.Background(), ki, r.Header.Get("User-Agent"))
|
|
||||||
handlerFunc := s.handlerWithGlobalMiddlewares(handler)
|
handlerFunc := s.handlerWithGlobalMiddlewares(handler)
|
||||||
|
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// UAStringKey is used as key type for user-agent string in net/context struct
|
// UAStringKey is used as key type for user-agent string in net/context struct
|
||||||
const UAStringKey = "upstream-user-agent"
|
type UAStringKey struct{}
|
||||||
|
|
||||||
// DockerUserAgent is the User-Agent the Docker client uses to identify itself.
|
// DockerUserAgent is the User-Agent the Docker client uses to identify itself.
|
||||||
// In accordance with RFC 7231 (5.5.3) is of the form:
|
// In accordance with RFC 7231 (5.5.3) is of the form:
|
||||||
|
@ -39,9 +39,9 @@ func DockerUserAgent(ctx context.Context) string {
|
||||||
func getUserAgentFromContext(ctx context.Context) string {
|
func getUserAgentFromContext(ctx context.Context) string {
|
||||||
var upstreamUA string
|
var upstreamUA string
|
||||||
if ctx != nil {
|
if ctx != nil {
|
||||||
var ki interface{} = ctx.Value(UAStringKey)
|
var ki interface{} = ctx.Value(UAStringKey{})
|
||||||
if ki != nil {
|
if ki != nil {
|
||||||
upstreamUA = ctx.Value(UAStringKey).(string)
|
upstreamUA = ctx.Value(UAStringKey{}).(string)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return upstreamUA
|
return upstreamUA
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue