github.com/mailgun/mailgun-go/v3@v3.6.4/mock_validation.go (about) 1 package mailgun 2 3 import ( 4 "net/http" 5 "net/mail" 6 "strings" 7 8 "github.com/go-chi/chi" 9 ) 10 11 func (ms *MockServer) addValidationRoutes(r chi.Router) { 12 r.Get("/address/validate", ms.validateEmail) 13 r.Get("/address/parse", ms.parseEmail) 14 r.Get("/address/private/validate", ms.validateEmail) 15 r.Get("/address/private/parse", ms.parseEmail) 16 } 17 18 func (ms *MockServer) validateEmail(w http.ResponseWriter, r *http.Request) { 19 if r.FormValue("address") == "" { 20 w.WriteHeader(http.StatusBadRequest) 21 toJSON(w, okResp{Message: "'address' parameter is required"}) 22 return 23 } 24 25 var results EmailVerification 26 parts, err := mail.ParseAddress(r.FormValue("address")) 27 if err == nil { 28 results.IsValid = true 29 results.Parts.Domain = strings.Split(parts.Address, "@")[1] 30 results.Parts.LocalPart = strings.Split(parts.Address, "@")[0] 31 results.Parts.DisplayName = parts.Name 32 } 33 toJSON(w, results) 34 } 35 36 func (ms *MockServer) parseEmail(w http.ResponseWriter, r *http.Request) { 37 if r.FormValue("addresses") == "" { 38 w.WriteHeader(http.StatusBadRequest) 39 toJSON(w, okResp{Message: "'addresses' parameter is required"}) 40 return 41 } 42 43 addresses := strings.Split(r.FormValue("addresses"), ",") 44 45 var results addressParseResult 46 for _, address := range addresses { 47 _, err := mail.ParseAddress(address) 48 if err != nil { 49 results.Unparseable = append(results.Unparseable, address) 50 } else { 51 results.Parsed = append(results.Parsed, address) 52 } 53 } 54 toJSON(w, results) 55 }