Class: BriteVerify::EmailFetcher

Inherits:
Object
  • Object
show all
Defined in:
lib/brite_verify/email_fetcher.rb

Constant Summary collapse

EMAIL_PATH =
"/emails.json"

Instance Method Summary collapse

Constructor Details

#initialize(key) ⇒ EmailFetcher

Returns a new instance of EmailFetcher.



9
10
11
# File 'lib/brite_verify/email_fetcher.rb', line 9

def initialize(key)
  @key = key
end

Instance Method Details

#fetch_email(address) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/brite_verify/email_fetcher.rb', line 20

def fetch_email(address)
  uri                   = verification_uri(address)
  http                  = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl          = true
  http.continue_timeout = ENV.fetch("BRITEVERIFY_CONTINUE_TIMEOUT", 60).to_i
  http.open_timeout     = ENV.fetch("BRITEVERIFY_OPEN_TIMEOUT", 60).to_i
  http.read_timeout     = ENV.fetch("BRITEVERIFY_READ_TIMEOUT", 60).to_i
  http.verify_mode      = OpenSSL::SSL::VERIFY_PEER
  request               = Net::HTTP::Get.new(uri.request_uri)
  response              = http.request(request)
  EmailResponse.new(response)
end

#fetch_raw_email(address) ⇒ Object



13
14
15
16
17
18
# File 'lib/brite_verify/email_fetcher.rb', line 13

def fetch_raw_email(address)
  email_response = fetch_email(address)
  email_response.raw_email
rescue Timeout::Error
  {}
end

#verification_uri(address) ⇒ Object



33
34
35
36
# File 'lib/brite_verify/email_fetcher.rb', line 33

def verification_uri(address)
  query = URI.encode_www_form(address: address, apikey: @key)
  URI::HTTPS.build({host: HOST, path: EMAIL_PATH, query: query})
end