github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/presentation/check-if-email-exist/mx.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 type mxPresentation struct { 10 AcceptsMail bool `json:"accepts_mail"` 11 Records []string `json:"records"` 12 } 13 14 type mxConverter struct{} 15 16 func (mxConverter) Can(_ evmail.Address, result ev.ValidationResult, _ converter.Options) bool { 17 return result.ValidatorName() == ev.MXValidatorName 18 } 19 20 func (mxConverter) Convert(_ evmail.Address, result ev.ValidationResult, _ converter.Options) interface{} { 21 mxResult := result.(ev.MXValidationResult) 22 lenMX := len(mxResult.MX()) 23 records := make([]string, lenMX) 24 25 for i, mx := range mxResult.MX() { 26 records[i] = mx.Host 27 } 28 29 return mxPresentation{ 30 lenMX > 0, 31 records, 32 } 33 }