github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/presentation/check-if-email-exist/availability.go (about) 1 package checkifemailexist 2 3 // FuncAvailability is an interface to calculate availability 4 type FuncAvailability func(depPresentation DepPresentation) Availability 5 6 // Availability is a type 7 type Availability string 8 9 func (a Availability) String() string { 10 return string(a) 11 } 12 13 // Availability constants 14 const ( 15 Risky Availability = "risky" 16 Invalid Availability = "invalid" 17 Safe Availability = "safe" 18 Unknown Availability = "unknown" 19 ) 20 21 // CalculateAvailability calculates availability status 22 func CalculateAvailability(depPresentation DepPresentation) Availability { 23 if depPresentation.Misc.IsDisposable || 24 depPresentation.Misc.IsRoleAccount || 25 depPresentation.SMTP.IsCatchAll || 26 depPresentation.SMTP.HasFullInbox { 27 return Risky 28 } 29 30 if !depPresentation.SMTP.IsDeliverable || 31 !depPresentation.SMTP.CanConnectSMTP || 32 depPresentation.SMTP.IsDisabled { 33 return Invalid 34 } 35 return Safe 36 /* 37 TODO run rust code to understand when Unknown should be used 38 return Unknown 39 */ 40 }