class MainStreet::AddressVerifier
Public Class Methods
new(address, country: nil, locale: nil)
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 3 def initialize(address, country: nil, locale: nil) @address = address @country = country @locale = locale end
Public Instance Methods
failure_message()
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 13 def failure_message if !result message :unconfirmed, "Address can't be confirmed" elsif result.respond_to?(:analysis) analysis = result.analysis if analysis["verification_status"] case analysis["verification_status"] when "Verified" nil # success!! when "Ambiguous", "Partial", "None" message :unconfirmed, "Address can't be confirmed" else raise "Unknown verification_status" end elsif analysis["dpv_match_code"] case analysis["dpv_match_code"] when "Y" nil # success!! when "N" message :unconfirmed, "Address can't be confirmed" when "S" message :apt_unconfirmed, "Apartment or suite can't be confirmed" when "D" message :apt_missing, "Apartment or suite is missing" else raise "Unknown dpv_match_code" end end end end
latitude()
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 58 def latitude result && result.latitude end
longitude()
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 62 def longitude result && result.longitude end
result()
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 45 def result @result ||= begin options = {lookup: lookup} options[:country] = @country if @country && !usa? # don't use smarty streets zipcode only API # keep mirrored with geocoder gem, including \Z # \Z is the same as \z when strip is used if @address.to_s.strip !~ /\A\d{5}(-\d{4})?\Z/ Geocoder.search(@address, options).first end end end
success?()
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 9 def success? failure_message.nil? end
Private Instance Methods
lookup()
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 72 def lookup ENV["SMARTY_STREETS_AUTH_ID"] ? :smarty_streets : nil end
message(key, default)
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 76 def message(key, default) if defined?(I18n) I18n.t(key, scope: [:mainstreet, :errors, :messages], locale: @locale, default: default) else default end end
usa?()
click to toggle source
# File lib/mainstreet/address_verifier.rb, line 68 def usa? ["United States", "USA", "US", "840"].include?(@country.to_s) end