From 509ab4f3f84b7a1c75c9ac0cb5d38ce5c1dbbaad Mon Sep 17 00:00:00 2001 From: Rob Murray <robmurray17@gmail.com> Date: Wed, 21 May 2014 17:13:47 +0100 Subject: [PATCH] Add minimal PostcodeAnywhere UK geocoding provider --- lib/geocoder/lookups/postcode_anywhere_uk.rb | 37 ++++++++++++++++++++ lib/geocoder/results/postcode_anywhere_uk.rb | 29 +++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 lib/geocoder/lookups/postcode_anywhere_uk.rb create mode 100644 lib/geocoder/results/postcode_anywhere_uk.rb diff --git a/lib/geocoder/lookups/postcode_anywhere_uk.rb b/lib/geocoder/lookups/postcode_anywhere_uk.rb new file mode 100644 index 00000000..2b4a835e --- /dev/null +++ b/lib/geocoder/lookups/postcode_anywhere_uk.rb @@ -0,0 +1,37 @@ +require 'geocoder/lookups/base' +require 'geocoder/results/postcode_anywhere_uk' + +module Geocoder::Lookup + class PostcodeAnywhereUk < Base + + BASE_URL_GEOCODE_V200 = 'services.postcodeanywhere.co.uk/Geocoding/UK/Geocode/v2.00/json.ws' + + def name + 'PostcodeAnywhereUk' + end + + def required_api_key_parts + %w(key) + end + + def query_url(query) + format('%s://%s?%s', protocol, BASE_URL_GEOCODE_V200, url_query_string(query)) + end + + private + + def results(query) + response = fetch_data(query) + return [] if response.nil? || !response.is_a?(Array) || response.empty? + + return response + end + + def query_url_params(query) + { + :location => query.sanitized_text, + :key => configuration.api_key + }.merge(super) + end + end +end diff --git a/lib/geocoder/results/postcode_anywhere_uk.rb b/lib/geocoder/results/postcode_anywhere_uk.rb new file mode 100644 index 00000000..b3194959 --- /dev/null +++ b/lib/geocoder/results/postcode_anywhere_uk.rb @@ -0,0 +1,29 @@ +require 'geocoder/results/base' + +module Geocoder::Result + class PostcodeAnywhereUk < Base + + def coordinates + [@data['Latitude'].to_f, @data['Longitude'].to_f] + end + + def blank_result + '' + end + alias_method :state, :blank_result + alias_method :state_code, :blank_result + alias_method :postal_code, :blank_result + + def country + 'United Kingdom' + end + + def country_code + 'UK' + end + + def address + [@data['Location'], @data['OsGrid']].join(', ') + end + end +end \ No newline at end of file -- GitLab