github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/presentation/check-if-email-exist/syntax.go (about)

     1  package checkifemailexist
     2  
     3  import (
     4  	"github.com/go-email-validator/go-email-validator/pkg/ev"
     5  	"github.com/go-email-validator/go-email-validator/pkg/ev/evmail"
     6  	"github.com/go-email-validator/go-email-validator/pkg/presentation/converter"
     7  )
     8  
     9  // SyntaxPresentation for check-if-email-exists
    10  type SyntaxPresentation struct {
    11  	Address       *string `json:"address"`
    12  	Username      string  `json:"username"`
    13  	Domain        string  `json:"domain"`
    14  	IsValidSyntax bool    `json:"is_valid_syntax"`
    15  }
    16  
    17  // SyntaxConverter converts ev.ValidationResult in SyntaxConverter
    18  type SyntaxConverter struct{}
    19  
    20  // Can ev.ValidationResult be converted in SyntaxConverter
    21  func (SyntaxConverter) Can(_ evmail.Address, result ev.ValidationResult, _ converter.Options) bool {
    22  	return result.ValidatorName() == ev.SyntaxValidatorName
    23  }
    24  
    25  // Convert ev.ValidationResult in SyntaxPresentation
    26  func (SyntaxConverter) Convert(email evmail.Address, result ev.ValidationResult, _ converter.Options) interface{} {
    27  	presentation := SyntaxPresentation{}
    28  
    29  	if result.IsValid() {
    30  		address := email.String()
    31  		presentation.Address = &address
    32  		presentation.Username = email.Username()
    33  		presentation.Domain = email.Domain()
    34  		presentation.IsValidSyntax = result.IsValid()
    35  	}
    36  	return presentation
    37  }