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 }