package policy import ( "net/http" "git.maze.io/maze/styx/logger" proxy "git.maze.io/maze/styx/proxy" ) func NewRequestHandler(p *Policy) proxy.RequestHandler { log := logger.StandardLog.Value("policy", p.name) return proxy.RequestHandlerFunc(func(ctx proxy.Context) (*http.Request, *http.Response) { input := NewInputFromRequest(ctx, ctx.Request()) input.logValues(log).Trace("Running request handler") result, err := p.Query(input) if err != nil { log.Err(err).Error("Error evaulating policy") return nil, nil } r, err := result.Response(ctx) if err != nil { log.Err(err).Error("Error generating response") return nil, nil } return nil, r }) } func NewResponseHandler(p *Policy) proxy.ResponseHandler { return proxy.ResponseHandlerFunc(func(ctx proxy.Context) *http.Response { input := NewInputFromResponse(ctx, ctx.Response()) result, err := p.Query(input) if err != nil { logger.StandardLog.Err(err).Error("Error evaulating policy") return nil } r, err := result.Response(ctx) if err != nil { logger.StandardLog.Err(err).Error("Error generating response") return nil } return r }) }