56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package mailgun
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
	"net/mail"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"github.com/go-chi/chi"
 | 
						|
)
 | 
						|
 | 
						|
func (ms *MockServer) addValidationRoutes(r chi.Router) {
 | 
						|
	r.Get("/address/validate", ms.validateEmail)
 | 
						|
	r.Get("/address/parse", ms.parseEmail)
 | 
						|
	r.Get("/address/private/validate", ms.validateEmail)
 | 
						|
	r.Get("/address/private/parse", ms.parseEmail)
 | 
						|
}
 | 
						|
 | 
						|
func (ms *MockServer) validateEmail(w http.ResponseWriter, r *http.Request) {
 | 
						|
	if r.FormValue("address") == "" {
 | 
						|
		w.WriteHeader(http.StatusBadRequest)
 | 
						|
		toJSON(w, okResp{Message: "'address' parameter is required"})
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	var results EmailVerification
 | 
						|
	parts, err := mail.ParseAddress(r.FormValue("address"))
 | 
						|
	if err == nil {
 | 
						|
		results.IsValid = true
 | 
						|
		results.Parts.Domain = strings.Split(parts.Address, "@")[1]
 | 
						|
		results.Parts.LocalPart = strings.Split(parts.Address, "@")[0]
 | 
						|
		results.Parts.DisplayName = parts.Name
 | 
						|
	}
 | 
						|
	toJSON(w, results)
 | 
						|
}
 | 
						|
 | 
						|
func (ms *MockServer) parseEmail(w http.ResponseWriter, r *http.Request) {
 | 
						|
	if r.FormValue("addresses") == "" {
 | 
						|
		w.WriteHeader(http.StatusBadRequest)
 | 
						|
		toJSON(w, okResp{Message: "'addresses' parameter is required"})
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	addresses := strings.Split(r.FormValue("addresses"), ",")
 | 
						|
 | 
						|
	var results addressParseResult
 | 
						|
	for _, address := range addresses {
 | 
						|
		_, err := mail.ParseAddress(address)
 | 
						|
		if err != nil {
 | 
						|
			results.Unparseable = append(results.Unparseable, address)
 | 
						|
		} else {
 | 
						|
			results.Parsed = append(results.Parsed, address)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	toJSON(w, results)
 | 
						|
}
 |