github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/api/server/middleware/experimental.go (about) 1 package middleware // import "github.com/docker/docker/api/server/middleware" 2 3 import ( 4 "context" 5 "net/http" 6 ) 7 8 // ExperimentalMiddleware is a the middleware in charge of adding the 9 // 'Docker-Experimental' header to every outgoing request 10 type ExperimentalMiddleware struct { 11 experimental string 12 } 13 14 // NewExperimentalMiddleware creates a new ExperimentalMiddleware 15 func NewExperimentalMiddleware(experimentalEnabled bool) ExperimentalMiddleware { 16 if experimentalEnabled { 17 return ExperimentalMiddleware{"true"} 18 } 19 return ExperimentalMiddleware{"false"} 20 } 21 22 // WrapHandler returns a new handler function wrapping the previous one in the request chain. 23 func (e ExperimentalMiddleware) WrapHandler(handler func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error) func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error { 24 return func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error { 25 w.Header().Set("Docker-Experimental", e.experimental) 26 return handler(ctx, w, r, vars) 27 } 28 }