12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package router
- import (
- "errors"
- "net/http"
- "golang.org/x/net/context"
- apierrors "github.com/docker/docker/api/errors"
- "github.com/docker/docker/api/server/httputils"
- )
- var (
- errExperimentalFeature = errors.New("This experimental feature is disabled by default. Start the Docker daemon with --experimental in order to enable it.")
- )
- // 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
- }
- func experimentalHandler(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
- return apierrors.NewErrorWithStatusCode(errExperimentalFeature, http.StatusNotImplemented)
- }
- // Handler returns 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,
- }
- }
|