Blame vendor/github.com/julienschmidt/httprouter/params_go17.go

Packit Service 4d2de5
// +build go1.7
Packit Service 4d2de5
Packit Service 4d2de5
package httprouter
Packit Service 4d2de5
Packit Service 4d2de5
import (
Packit Service 4d2de5
	"context"
Packit Service 4d2de5
	"net/http"
Packit Service 4d2de5
)
Packit Service 4d2de5
Packit Service 4d2de5
type paramsKey struct{}
Packit Service 4d2de5
Packit Service 4d2de5
// ParamsKey is the request context key under which URL params are stored.
Packit Service 4d2de5
//
Packit Service 4d2de5
// This is only present from go 1.7.
Packit Service 4d2de5
var ParamsKey = paramsKey{}
Packit Service 4d2de5
Packit Service 4d2de5
// Handler is an adapter which allows the usage of an http.Handler as a
Packit Service 4d2de5
// request handle. With go 1.7+, the Params will be available in the
Packit Service 4d2de5
// request context under ParamsKey.
Packit Service 4d2de5
func (r *Router) Handler(method, path string, handler http.Handler) {
Packit Service 4d2de5
	r.Handle(method, path,
Packit Service 4d2de5
		func(w http.ResponseWriter, req *http.Request, p Params) {
Packit Service 4d2de5
			ctx := req.Context()
Packit Service 4d2de5
			ctx = context.WithValue(ctx, ParamsKey, p)
Packit Service 4d2de5
			req = req.WithContext(ctx)
Packit Service 4d2de5
			handler.ServeHTTP(w, req)
Packit Service 4d2de5
		},
Packit Service 4d2de5
	)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// ParamsFromContext pulls the URL parameters from a request context,
Packit Service 4d2de5
// or returns nil if none are present.
Packit Service 4d2de5
//
Packit Service 4d2de5
// This is only present from go 1.7.
Packit Service 4d2de5
func ParamsFromContext(ctx context.Context) Params {
Packit Service 4d2de5
	p, _ := ctx.Value(ParamsKey).(Params)
Packit Service 4d2de5
	return p
Packit Service 4d2de5
}