mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
7d62e40f7e
Since Go 1.7, context is a standard package. Since Go 1.9, everything that is provided by "x/net/context" is a couple of type aliases to types in "context". Many vendored packages still use x/net/context, so vendor entry remains for now. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
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 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,
|
|
}
|
|
}
|