1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package router // import "github.com/docker/docker/api/server/router"
- import (
- "context"
- "net/http"
- "github.com/docker/docker/api/server/httputils"
- )
- // ExperimentalRoute defines an experimental API route that can be enabled or disabled.
- type ExperimentalRoute interface {
- Route
- Enable()
- Disable()
- }
- // experimentalRoute defines an experimental API route that can be enabled or disabled.
- // It implements ExperimentalRoute
- type experimentalRoute struct {
- local Route
- handler httputils.APIFunc
- }
- // Enable enables this experimental route
- func (r *experimentalRoute) Enable() {
- r.handler = r.local.Handler()
- }
- // Disable disables the experimental route
- func (r *experimentalRoute) Disable() {
- r.handler = experimentalHandler
- }
- type notImplementedError struct{}
- func (notImplementedError) Error() string {
- return "This experimental feature is disabled by default. Start the Docker daemon in experimental mode in order to enable it."
- }
- func (notImplementedError) NotImplemented() {}
- func experimentalHandler(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
- return notImplementedError{}
- }
- // Handler returns the APIFunc to let the server wrap it in middlewares.
- func (r *experimentalRoute) Handler() httputils.APIFunc {
- return r.handler
- }
- // Method returns the http method that the route responds to.
- func (r *experimentalRoute) Method() string {
- return r.local.Method()
- }
- // Path returns the subpath where the route responds to.
- func (r *experimentalRoute) Path() string {
- return r.local.Path()
- }
- // Experimental will mark a route as experimental.
- func Experimental(r Route) Route {
- return &experimentalRoute{
- local: r,
- handler: experimentalHandler,
- }
- }
|