Skip to content

Commit

Permalink
Add AddDisposableDomains method #30 (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
daisy1754 committed Jul 13, 2021
1 parent fe5837e commit c72795a
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
5 changes: 5 additions & 0 deletions handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,10 @@ func updateDisposableDomains(source string) error {
for _, d := range domains {
disposableSyncDomains.Store(d, struct{}{})
}

// add additionalDisposableDomains again
for d := range additionalDisposableDomains {
disposableSyncDomains.Store(d, struct{}{})
}
return nil
}
13 changes: 12 additions & 1 deletion verifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ type Result struct {
HasMxRecords bool `json:"has_mx_records"` // whether or not MX-Records for the domain
}

// additional list of disposable domains set via users of this library
var additionalDisposableDomains map[string]bool = map[string]bool{}

// init loads disposable_domain meta data to disposableSyncDomains which are safe for concurrent use
func init() {
for d := range disposableDomains {
Expand All @@ -41,7 +44,6 @@ func NewVerifier() *Verifier {
fromEmail: defaultFromEmail,
helloName: defaultHelloName,
}

}

// Verify performs address, misc, mx and smtp checks
Expand Down Expand Up @@ -95,6 +97,15 @@ func (v *Verifier) Verify(email string) (*Result, error) {
return &ret, nil
}

// AddDisposableDomains adds additional domains as disposable domains.
func (v *Verifier) AddDisposableDomains(domains []string) *Verifier {
for _, d := range domains {
additionalDisposableDomains[d] = true
disposableSyncDomains.Store(d, struct{}{})
}
return v
}

// EnableGravatarCheck enables check gravatar,
// we don't check gravatar by default
func (v *Verifier) EnableGravatarCheck() *Verifier {
Expand Down
30 changes: 30 additions & 0 deletions verifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,36 @@ func TestCheckEmail_Disposable(t *testing.T) {
assert.Equal(t, &expected, ret)
}


func TestCheckEmail_Disposable_override(t *testing.T) {
var (
username = "exampleuser"
domain = "iamdisposableemail.test"
address = username + "@" + domain
email = address
)

verifier := NewVerifier().EnableSMTPCheck().AddDisposableDomains([]string{"iamdisposableemail.test"})
ret, err := verifier.Verify(email)
expected := Result{
Email: email,
Syntax: Syntax{
Username: username,
Domain: domain,
Valid: true,
},
HasMxRecords: false,
Reachable: reachableUnknown,
Disposable: true,
RoleAccount: false,
Free: false,
SMTP: nil,
}
assert.Nil(t, err)
assert.Equal(t, &expected, ret)
}


func TestCheckEmail_RoleAccount(t *testing.T) {
var (
// trueVal = true
Expand Down

0 comments on commit c72795a

Please sign in to comment.