Class: EmailAssessor::Address
- Inherits:
-
Object
- Object
- EmailAssessor::Address
- Defined in:
- lib/email_assessor/address.rb
Constant Summary collapse
- PROHIBITED_DOMAIN_PREFIXES =
[ '.', '-', ].freeze
- PROHIBITED_DOMAIN_CONTENT =
[ '+', '!', '_', '/', ' ', '..', '-.', "'", ].freeze
- PROHIBITED_DOMAIN_SUFFIXES =
[ # none ].freeze
- PROHIBITED_LOCAL_PREFIXES =
[ '.', ].freeze
- PROHIBITED_LOCAL_CONTENT =
[ '..', ].freeze
- PROHIBITED_LOCAL_SUFFIXES =
[ '.', ].freeze
Instance Attribute Summary collapse
-
#parsed ⇒ Object
Returns the value of attribute parsed.
Class Method Summary collapse
Instance Method Summary collapse
- #blacklisted? ⇒ Boolean
- #disposable? ⇒ Boolean
- #educational? ⇒ Boolean
- #fastpass? ⇒ Boolean
-
#initialize(raw_address) ⇒ Address
constructor
A new instance of Address.
- #mx_servers ⇒ Object
- #valid? ⇒ Boolean
- #valid_mx? ⇒ Boolean
Constructor Details
#initialize(raw_address) ⇒ Address
Returns a new instance of Address.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/email_assessor/address.rb', line 86 def initialize(raw_address) @parse_error = false @raw_address = raw_address @address = nil @valid = nil @mx_servers = nil @domain_tokens = nil begin @address = Mail::Address.new(raw_address) rescue Mail::Field::ParseError @parse_error = true end end |
Instance Attribute Details
#parsed ⇒ Object
Returns the value of attribute parsed.
8 9 10 |
# File 'lib/email_assessor/address.rb', line 8 def parsed @parsed end |
Class Method Details
.prohibited_domain_regex ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/email_assessor/address.rb', line 43 def prohibited_domain_regex @prohibited_domain_content_regex ||= make_regex( prefixes: PROHIBITED_DOMAIN_PREFIXES, content: PROHIBITED_DOMAIN_CONTENT, suffixes: PROHIBITED_DOMAIN_SUFFIXES ) end |
.prohibited_local_regex ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/email_assessor/address.rb', line 51 def prohibited_local_regex @prohibited_local_content_regex ||= make_regex( prefixes: PROHIBITED_LOCAL_PREFIXES, content: PROHIBITED_LOCAL_CONTENT, suffixes: PROHIBITED_LOCAL_SUFFIXES ) end |
Instance Method Details
#blacklisted? ⇒ Boolean
121 122 123 |
# File 'lib/email_assessor/address.rb', line 121 def blacklisted? domain_in_list?(EmailAssessor.blacklisted_domains) end |
#disposable? ⇒ Boolean
117 118 119 |
# File 'lib/email_assessor/address.rb', line 117 def disposable? domain_in_list?(EmailAssessor.disposable_domains) end |
#educational? ⇒ Boolean
125 126 127 |
# File 'lib/email_assessor/address.rb', line 125 def educational? domain_in_list?(EmailAssessor.educational_domains) end |
#fastpass? ⇒ Boolean
129 130 131 |
# File 'lib/email_assessor/address.rb', line 129 def fastpass? domain_in_list?(EmailAssessor.fastpass_domains) end |
#mx_servers ⇒ Object
137 138 139 140 141 142 143 |
# File 'lib/email_assessor/address.rb', line 137 def mx_servers @mx_servers ||= Resolv::DNS.open do |dns| mx_servers = dns.getresources(@address.domain, Resolv::DNS::Resource::IN::MX) (mx_servers.any? && mx_servers) || dns.getresources(@address.domain, Resolv::DNS::Resource::IN::A) end end |
#valid? ⇒ Boolean
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/email_assessor/address.rb', line 101 def valid? return @valid unless @valid.nil? return false if @parse_error @valid = if @address.domain && @address.address == @raw_address domain = @address.domain domain.include?('.') && !domain.match?(self.class.prohibited_domain_regex) && !@address.local.match?(self.class.prohibited_local_regex) else false end end |
#valid_mx? ⇒ Boolean
133 134 135 |
# File 'lib/email_assessor/address.rb', line 133 def valid_mx? valid? && mx_servers.any? end |