github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+incompatible/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  }