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