Sha256: 1c743fd378f85d78466f23ff10a68715e0543d2fb8dc439daa07ebb2c3f38f7c
Contents?: true
Size: 1.9 KB
Versions: 2
Compression:
Stored size: 1.9 KB
Contents
module AddressFinder class Cleanse def initialize(q:, country: nil, delivered: nil, post_box: nil, rural: nil, region_code: nil) @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['format'] = 'json' @params['key'] = config.api_key @params['secret'] = config.api_secret @country = country || config.default_country end def perform build_request execute_request build_result end private attr_reader :full_url, :params, :response_body, :response_status, :result, :country def build_request @full_url = "https://#{config.hostname}:#{config.port}/api/#{country}/address/cleanse?#{encoded_params}" end def execute_request uri = URI.parse(full_url) http = Net::HTTP.new(uri.host, uri.port, config.proxy_host, config.proxy_port, config.proxy_user, config.proxy_password) http.open_timeout = config.timeout http.read_timeout = config.timeout http.use_ssl = (uri.scheme == "https") request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) @response_body = response.body @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'] return Result.new(response_hash) end nil end def encoded_params query = params.map{|k,v| "#{k}=#{v}"}.join('&') URI::encode(query) end def response_hash @_response_hash ||= JSON.parse(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.1.0 | lib/addressfinder/cleanse.rb |
addressfinder-1.0.0 | lib/addressfinder/cleanse.rb |