github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/validator_blacklist_domain.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 // BlackListDomainsValidatorName is name of black domain 9 // It checks an domain of email in list. If the address domain is in, the email is invalid. 10 const BlackListDomainsValidatorName ValidatorName = "BlackListDomains" 11 12 // BlackListDomainsError is BlackListEmailsValidatorName error 13 type BlackListDomainsError struct{} 14 15 func (BlackListDomainsError) Error() string { 16 return "BlackListDomainsError" 17 } 18 19 // NewBlackListValidator instantiates BlackListDomainsValidatorName validator 20 func NewBlackListValidator(d contains.InSet) Validator { 21 return blackListValidator{d: d} 22 } 23 24 type blackListValidator struct { 25 d contains.InSet 26 AValidatorWithoutDeps 27 } 28 29 func (w blackListValidator) Validate(input Input, _ ...ValidationResult) ValidationResult { 30 var err error 31 var isContains = w.d.Contains(input.Email().Domain()) 32 if isContains { 33 err = BlackListDomainsError{} 34 } 35 36 return NewResult(!isContains, utils.Errs(err), nil, BlackListDomainsValidatorName) 37 }