experimental.go 1.1 KB

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