From 1377a2ddee3f3a35e242237d4e60c6a9d39fc552 Mon Sep 17 00:00:00 2001 From: KimMachineGun Date: Wed, 22 Aug 2018 11:20:22 +0900 Subject: [PATCH] api/server, dockerversion: modify context key Signed-off-by: KimMachineGun --- api/server/httputils/httputils.go | 6 ++---- api/server/middleware/version.go | 2 +- api/server/server.go | 3 +-- dockerversion/useragent.go | 6 +++--- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/api/server/httputils/httputils.go b/api/server/httputils/httputils.go index 5a6854415c..7303814997 100644 --- a/api/server/httputils/httputils.go +++ b/api/server/httputils/httputils.go @@ -12,10 +12,8 @@ import ( "github.com/sirupsen/logrus" ) -type contextKey string - // 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. // 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 "" } - if val := ctx.Value(APIVersionKey); val != nil { + if val := ctx.Value(APIVersionKey{}); val != nil { return val.(string) } diff --git a/api/server/middleware/version.go b/api/server/middleware/version.go index 88b11ca377..424f3b5983 100644 --- a/api/server/middleware/version.go +++ b/api/server/middleware/version.go @@ -58,7 +58,7 @@ func (v VersionMiddleware) WrapHandler(handler func(ctx context.Context, w http. if versions.GreaterThan(apiVersion, 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) } diff --git a/api/server/server.go b/api/server/server.go index c364008286..3b4e630c41 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -129,8 +129,7 @@ func (s *Server) makeHTTPHandler(handler httputils.APIFunc) http.HandlerFunc { // use intermediate variable to prevent "should not use basic type // string as key in context.WithValue" golint errors - var ki interface{} = dockerversion.UAStringKey - ctx := context.WithValue(context.Background(), ki, r.Header.Get("User-Agent")) + ctx := context.WithValue(context.Background(), dockerversion.UAStringKey{}, r.Header.Get("User-Agent")) handlerFunc := s.handlerWithGlobalMiddlewares(handler) vars := mux.Vars(r) diff --git a/dockerversion/useragent.go b/dockerversion/useragent.go index 2eceb6fa9e..afbdcd8584 100644 --- a/dockerversion/useragent.go +++ b/dockerversion/useragent.go @@ -10,7 +10,7 @@ import ( ) // 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. // 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 { var upstreamUA string if ctx != nil { - var ki interface{} = ctx.Value(UAStringKey) + var ki interface{} = ctx.Value(UAStringKey{}) if ki != nil { - upstreamUA = ctx.Value(UAStringKey).(string) + upstreamUA = ctx.Value(UAStringKey{}).(string) } } return upstreamUA