iris/cache/client/rule/conditional.go
Gerasimos (Makis) Maropoulos 3945fa68d1 obey the vote of @1370 (77-111 at this point) - add import suffix on iris repository
We have to do the same on iris-contrib/examples, iris-contrib/middleware and e.t.c.


Former-commit-id: 0860688158f374bc137bc934b81b26dcd0e10964
2019-10-25 01:27:02 +03:00

50 lines
1000 B
Go

package rule
import (
"github.com/kataras/iris/v12/context"
)
// Conditional is a Rule witch adds a predicate in order to its methods to execute
type conditionalRule struct {
claimPredicate func() bool
validPredicate func() bool
}
var emptyConditionalPredicate = func() bool {
return true
}
var _ Rule = &conditionalRule{}
// Conditional returns a new rule witch has conditionals
func Conditional(claimPredicate func() bool, validPredicate func() bool) Rule {
if claimPredicate == nil {
claimPredicate = emptyConditionalPredicate
}
if validPredicate == nil {
validPredicate = emptyConditionalPredicate
}
return &conditionalRule{
claimPredicate: claimPredicate,
validPredicate: validPredicate,
}
}
// Claim validator
func (c *conditionalRule) Claim(ctx context.Context) bool {
if !c.claimPredicate() {
return false
}
return true
}
// Valid validator
func (c *conditionalRule) Valid(ctx context.Context) bool {
if !c.validPredicate() {
return false
}
return true
}