github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/presentation/as-email-verifier/reachable.go (about)

     1  package asemailverifier
     2  
     3  // Reachable is a type
     4  type Reachable string
     5  
     6  func (a Reachable) String() string {
     7  	return string(a)
     8  }
     9  
    10  // Reachable constants
    11  const (
    12  	ReachableYes     Reachable = "yes"
    13  	ReachableNo      Reachable = "no"
    14  	ReachableUnknown Reachable = "unknown"
    15  )
    16  
    17  // FuncReachable is an interface to calculate Reachable
    18  type FuncReachable func(depPresentation DepPresentation) Reachable
    19  
    20  // CalculateReachable returns Reachable status
    21  func CalculateReachable(depPresentation DepPresentation) Reachable {
    22  	smtp := depPresentation.SMTP
    23  
    24  	if smtp == nil {
    25  		return ReachableUnknown
    26  	}
    27  
    28  	if smtp.Deliverable {
    29  		return ReachableYes
    30  	}
    31  	if smtp.CatchAll {
    32  		return ReachableUnknown
    33  	}
    34  	return ReachableNo
    35  }