func (m *fakeRequestContextMapper) Get(req *http.Request) (api.Context, bool) { ctx := api.NewContext() if m.user != nil { ctx = api.WithUser(ctx, m.user) } resolver := newTestRequestInfoResolver() info, err := resolver.GetRequestInfo(req) if err == nil { ctx = request.WithRequestInfo(ctx, info) } return ctx, true }
func (m *fakeRequestContextMapper) Get(req *http.Request) (api.Context, bool) { ctx := api.NewContext() if m.user != nil { ctx = api.WithUser(ctx, m.user) } resolver := &request.RequestInfoFactory{ APIPrefixes: sets.NewString("api", "apis"), GrouplessAPIPrefixes: sets.NewString("api"), } info, err := resolver.NewRequestInfo(req) if err == nil { ctx = request.WithRequestInfo(ctx, info) } return ctx, true }
// WithRequestInfo attaches a RequestInfo to the context. func WithRequestInfo(handler http.Handler, resolver *request.RequestInfoResolver, requestContextMapper api.RequestContextMapper) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { ctx, ok := requestContextMapper.Get(req) if !ok { internalError(w, req, errors.New("no context found for request")) return } info, err := resolver.GetRequestInfo(req) if err != nil { internalError(w, req, fmt.Errorf("failed to create RequestInfo: %v", err)) return } requestContextMapper.Update(req, request.WithRequestInfo(ctx, info)) handler.ServeHTTP(w, req) }) }