class EmailAssessor::Address
Constants
- PROHIBITED_DOMAIN_CONTENT
- PROHIBITED_DOMAIN_PREFIXES
- PROHIBITED_DOMAIN_SUFFIXES
- PROHIBITED_LOCAL_CONTENT
- PROHIBITED_LOCAL_PREFIXES
- PROHIBITED_LOCAL_SUFFIXES
Attributes
parsed[RW]
Public Class Methods
new(raw_address)
click to toggle source
# 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
prohibited_domain_regex()
click to toggle source
# 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()
click to toggle source
# 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
Private Class Methods
make_regex(prefixes: nil, content: nil, suffixes: nil)
click to toggle source
# File lib/email_assessor/address.rb, line 61 def make_regex(prefixes: nil, content: nil, suffixes: nil) parts = [] unless prefixes.nil? prefixes.each do |prefix| parts << "\\A#{Regexp.escape(prefix)}" end end unless content.nil? content.each do |prefix| parts << Regexp.escape(prefix) end end unless suffixes.nil? suffixes.each do |prefix| parts << "#{Regexp.escape(prefix)}\\z" end end Regexp.new(parts.join("|"), Regexp::IGNORECASE) end
Public Instance Methods
blacklisted?()
click to toggle source
# File lib/email_assessor/address.rb, line 121 def blacklisted? domain_in_list?(EmailAssessor.blacklisted_domains) end
disposable?()
click to toggle source
# File lib/email_assessor/address.rb, line 117 def disposable? domain_in_list?(EmailAssessor.disposable_domains) end
educational?()
click to toggle source
# File lib/email_assessor/address.rb, line 125 def educational? domain_in_list?(EmailAssessor.educational_domains) end
fastpass?()
click to toggle source
# File lib/email_assessor/address.rb, line 129 def fastpass? domain_in_list?(EmailAssessor.fastpass_domains) end
mx_servers()
click to toggle source
# 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?()
click to toggle source
# 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?()
click to toggle source
# File lib/email_assessor/address.rb, line 133 def valid_mx? valid? && mx_servers.any? end
Private Instance Methods
domain_in_list?(list)
click to toggle source
# File lib/email_assessor/address.rb, line 147 def domain_in_list?(list) valid? && list.include_any?(domain_tokens) end
domain_tokens()
click to toggle source
# File lib/email_assessor/address.rb, line 151 def domain_tokens @domain_tokens ||= EmailAssessor.tokenize_domain(@address.domain) end