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  }