package rules import "net/http" type ( CheckFunc func(cached Cache, r *http.Request) bool Checker interface { Check(cached Cache, r *http.Request) bool } CheckMatchSingle []Checker CheckMatchAll []Checker ) func (checker CheckFunc) Check(cached Cache, r *http.Request) bool { return checker(cached, r) } func (checkers CheckMatchSingle) Check(cached Cache, r *http.Request) bool { for _, check := range checkers { if check.Check(cached, r) { return true } } return false } func (checkers CheckMatchAll) Check(cached Cache, r *http.Request) bool { for _, check := range checkers { if !check.Check(cached, r) { return false } } return true }