class SmartyStreets::Request
Attributes
location[RW]
Public Class Methods
new(location)
click to toggle source
# File lib/smarty_streets/request.rb, line 12 def initialize(location) @location = location end
Public Instance Methods
standardize!()
click to toggle source
# File lib/smarty_streets/request.rb, line 16 def standardize! url = build_request_url(@location) handle_response(send_request(url)) end
Private Instance Methods
build_request_url(location)
click to toggle source
# File lib/smarty_streets/request.rb, line 49 def build_request_url(location) parameters = { input_id: location.input_id, street: location.street, street2: location.street2, secondary: location.secondary, city: location.city, state: location.state, zipcode: location.zipcode, lastline: location.lastline, addressee: location.addressee, urbanization: location.urbanization, candidates: location.candidates || SmartyStreets.configuration.candidates, "auth-id" => SmartyStreets.configuration.auth_id, "auth-token" => SmartyStreets.configuration.auth_token } parameter_string = parameters.collect { |k,v| "#{k.to_s}=#{CGI.escape(v.to_s)}" }.join('&') 'https://' + SmartyStreets.configuration.api_url + '/street-address/?' + parameter_string end
handle_response(response)
click to toggle source
# File lib/smarty_streets/request.rb, line 23 def handle_response(response) raise InvalidCredentials if response.code == 401 raise MalformedData if response.code == 400 raise PaymentRequired if response.code == 402 raise RemoteServerError if response.code == 500 raise NoValidCandidates if response.body.nil? JSON.parse(response.body).collect do |l| location = Location.new location.street = l['delivery_line_1'] location.street2 = l['delivery_line_2'] location.city = l['components']['city_name'] location.state = l['components']['state_abbreviation'] location.zipcode = l['components']['zipcode'] + '-' + l['components']['plus4_code'] location.delivery_point_barcode = l['delivery_point_barcode'] location.components = l['components'] location.metadata = l['metadata'] location.analysis = l['analysis'] location end end
send_request(url)
click to toggle source
# File lib/smarty_streets/request.rb, line 45 def send_request(url) HTTParty.get(url) end