Checkpoint
This commit is contained in:
44
policy/handler.go
Normal file
44
policy/handler.go
Normal file
@@ -0,0 +1,44 @@
|
||||
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
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user