github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/presentation/as-email-verifier/syntax.go (about)

     1  package asemailverifier
     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 is a syntax result
    10  type SyntaxPresentation struct {
    11  	Username string `json:"username"`
    12  	Domain   string `json:"domain"`
    13  	Valid    bool   `json:"valid"`
    14  }
    15  
    16  // SyntaxConverter converts ev.ValidationResult in SyntaxPresentation
    17  type SyntaxConverter struct{}
    18  
    19  // Can ev.ValidationResult be converted in SyntaxPresentation
    20  func (SyntaxConverter) Can(_ evmail.Address, result ev.ValidationResult, _ converter.Options) bool {
    21  	return result.ValidatorName() == ev.SyntaxValidatorName
    22  }
    23  
    24  // Convert ev.ValidationResult in SyntaxPresentation
    25  func (SyntaxConverter) Convert(email evmail.Address, result ev.ValidationResult, _ converter.Options) interface{} {
    26  	presentation := &SyntaxPresentation{Valid: result.IsValid()}
    27  
    28  	if presentation.Valid {
    29  		presentation.Username = email.Username()
    30  		presentation.Domain = email.Domain()
    31  	}
    32  
    33  	return presentation
    34  }