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  }