Sha256: 635fb97ce181d756b05815a5cc2860a8d30380a40fc440fe8e9e4df3855c014c
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
require 'ostruct' module AddressFinder class Cleanse attr_reader :result def initialize(q:, country: nil, delivered: nil, post_box: nil, rural: nil, region_code: nil, state_codes: nil, census: nil, domain: nil, key: nil, secret: nil, http:) @params = {} @params['q'] = q @params['delivered'] = delivered if delivered @params['post_box'] = post_box if post_box @params['rural'] = rural if rural @params['region_code'] = region_code if region_code @params['state_codes'] = state_codes if state_codes @params['census'] = census if census @params['domain'] = domain || config.domain if (domain || config.domain) @params['format'] = 'json' @params['key'] = key || config.api_key @params['secret'] = secret || config.api_secret @country = country || config.default_country @http = http end def perform build_request execute_request build_result self end private attr_reader :request_uri, :params, :country, :http attr_accessor :response_body, :response_status attr_writer :result def build_request @request_uri = "/api/#{country}/address/cleanse?#{encoded_params}" end def execute_request request = Net::HTTP::Get.new(request_uri) response = http.request(request) self.response_body = response.body self.response_status = response.code end def build_result if response_status != '200' raise AddressFinder::RequestRejectedError.new(@response_status, @response_body) end if response_hash['matched'] self.result = Result.new(response_hash['address'] || response_hash) else self.result = nil end end def encoded_params Util.encode_and_join_params(params) end def response_hash @_response_hash ||= MultiJson.load(response_body) end def config @_config ||= AddressFinder.configuration end class Result < OpenStruct end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
addressfinder-1.7.0 | lib/addressfinder/cleanse.rb |
addressfinder-1.6.2 | lib/addressfinder/cleanse.rb |