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  }