12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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 {
- return c.claimPredicate()
- }
- // Valid validator
- func (c *conditionalRule) Valid(ctx *context.Context) bool {
- return c.validPredicate()
- }
|