github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/validator_disposable.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/utils" 6 ) 7 8 // DisposableValidatorName is name of disposable validator 9 const DisposableValidatorName ValidatorName = "DisposableValidator" 10 11 // DisposableErr is text for DisposableError.Error 12 const DisposableErr = "DisposableError" 13 14 // DisposableError is DisposableValidatorName error 15 type DisposableError struct{} 16 17 func (DisposableError) Error() string { 18 return DisposableErr 19 } 20 21 // NewDisposableValidator instantiates DisposableValidatorName 22 func NewDisposableValidator(d contains.InSet) Validator { 23 return disposableValidator{d: d} 24 } 25 26 type disposableValidator struct { 27 AValidatorWithoutDeps 28 d contains.InSet 29 } 30 31 func (d disposableValidator) Validate(input Input, _ ...ValidationResult) ValidationResult { 32 var err error 33 var isDisposable = d.d.Contains(input.Email().Domain()) 34 if isDisposable { 35 err = DisposableError{} 36 } 37 38 return NewResult(!isDisposable, utils.Errs(err), nil, DisposableValidatorName) 39 }