github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/validator_free.go (about) 1 package ev 2 3 import ( 4 "github.com/go-email-validator/go-email-validator/pkg/ev/contains" 5 "github.com/go-email-validator/go-email-validator/pkg/ev/free" 6 "github.com/go-email-validator/go-email-validator/pkg/ev/utils" 7 ) 8 9 // FreeValidatorName is name of free validator 10 const FreeValidatorName ValidatorName = "FreeValidator" 11 12 // FreeErr is text for FreeError.Error 13 const FreeErr = "FreeError" 14 15 // FreeError is FreeValidatorName error 16 type FreeError struct{} 17 18 func (FreeError) Error() string { 19 return FreeErr 20 } 21 22 // FreeDefaultValidator instantiates default FreeValidatorName based on free.NewWillWhiteSetFree() 23 func FreeDefaultValidator() Validator { 24 return NewFreeValidator(free.NewWillWhiteSetFree()) 25 } 26 27 // NewFreeValidator instantiates FreeValidatorName 28 func NewFreeValidator(f contains.InSet) Validator { 29 return freeValidator{f: f} 30 } 31 32 type freeValidator struct { 33 AValidatorWithoutDeps 34 f contains.InSet 35 } 36 37 func (r freeValidator) Validate(input Input, _ ...ValidationResult) ValidationResult { 38 var err error 39 var isFree = r.f.Contains(input.Email().Domain()) 40 if isFree { 41 err = FreeError{} 42 } 43 44 return NewResult(!isFree, utils.Errs(err), nil, FreeValidatorName) 45 }