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  }