Sha256: 6dca3071caa099281b7bae1afdfff71adcff2c1764d3f98284ef015ab4cd9a53
Contents?: true
Size: 1.63 KB
Versions: 29
Compression:
Stored size: 1.63 KB
Contents
require 'geocoder/lookups/base' require 'geocoder/results/postcode_anywhere_uk' module Geocoder::Lookup class PostcodeAnywhereUk < Base # API documentation: http://www.postcodeanywhere.co.uk/Support/WebService/Geocoding/UK/Geocode/2/ BASE_URL_GEOCODE_V2_00 = 'services.postcodeanywhere.co.uk/Geocoding/UK/Geocode/v2.00/json.ws' DAILY_LIMIT_EXEEDED_ERROR_CODES = ['8', '17'] # api docs say these two codes are the same error INVALID_API_KEY_ERROR_CODE = '2' def name 'PostcodeAnywhereUk' end def required_api_key_parts %w(key) end def query_url(query) format('%s://%s?%s', protocol, BASE_URL_GEOCODE_V2_00, url_query_string(query)) end private def results(query) response = fetch_data(query) return [] if response.nil? || !response.is_a?(Array) || response.empty? raise_exception_for_response(response[0]) if response[0]['Error'] response end def raise_exception_for_response(response) case response['Error'] when *DAILY_LIMIT_EXEEDED_ERROR_CODES raise_error(Geocoder::OverQueryLimitError, response['Cause']) || Geocoder.log(:warn, response['Cause']) when INVALID_API_KEY_ERROR_CODE raise_error(Geocoder::InvalidApiKey, response['Cause']) || Geocoder.log(:warn, response['Cause']) else # anything else just raise general error with the api cause raise_error(Geocoder::Error, response['Cause']) || Geocoder.log(:warn, response['Cause']) end end def query_url_params(query) { :location => query.sanitized_text, :key => configuration.api_key }.merge(super) end end end
Version data entries
29 entries across 29 versions & 3 rubygems