package ctxlib import ( "context" "net/http" ) type ctxKey int const ( Method ctxKey = iota Headers Request RequestID Response ) func ResponseFromContext(ctx context.Context) http.ResponseWriter { return ctx.Value(Response).(http.ResponseWriter) } func RequestFromContext(ctx context.Context) *http.Request { c := ctx.Value(Request) if c == nil { return &http.Request{} } return c.(*http.Request) } func HeadersFromContext(ctx context.Context) http.Header { c := ctx.Value(Headers) if c == nil { return http.Header{} } return c.(http.Header) } func MethodFromContext(ctx context.Context) string { c := ctx.Value(Method) if c == nil { return http.MethodGet } return c.(string) }