diff --git a/lib/geocoder/lookups/mapquest.rb b/lib/geocoder/lookups/mapquest.rb index 08bdaaebd2e5701c0f0c8aa9da3d34704048934e..0b02807cd2c13cc45168259a77e32fac2c8819fe 100644 --- a/lib/geocoder/lookups/mapquest.rb +++ b/lib/geocoder/lookups/mapquest.rb @@ -1,32 +1,15 @@ require 'geocoder/lookups/base' +require "geocoder/lookups/nominatim" require "geocoder/results/mapquest" module Geocoder::Lookup - class Mapquest < Base + class Mapquest < Nominatim private # --------------------------------------------------------------- - def results(query) - return [] unless doc = fetch_data(query) - doc.is_a?(Array) ? doc : [doc] - end - def query_url(query) - params = { - :format => "json", - :polygon => "1", - :addressdetails => "1", - :"accept-language" => Geocoder::Configuration.language - } - if (query.reverse_geocode?) - method = 'reverse' - lat,lon = query.coordinates - params[:lat] = lat - params[:lon] = lon - else - method = 'search' - params[:q] = query.sanitized_text - end + params = query_url_params(query) + method = query.reverse_geocode? ? "reverse" : "search" "http://open.mapquestapi.com/#{method}?" + hash_to_query(params) end end diff --git a/lib/geocoder/lookups/nominatim.rb b/lib/geocoder/lookups/nominatim.rb index 4ded59b19614740db2f3507c2ab980416834cf1b..3a0773690c662ff9755f3309bd5778a48f35b74e 100644 --- a/lib/geocoder/lookups/nominatim.rb +++ b/lib/geocoder/lookups/nominatim.rb @@ -15,22 +15,26 @@ module Geocoder::Lookup doc.is_a?(Array) ? doc : [doc] end - def query_url(query) + def query_url_params(query) params = { :format => "json", :polygon => "1", :addressdetails => "1", :"accept-language" => Geocoder::Configuration.language } - if (query.reverse_geocode?) - method = 'reverse' + if query.reverse_geocode? lat,lon = query.coordinates params[:lat] = lat params[:lon] = lon else - method = 'search' params[:q] = query.sanitized_text end + params + end + + def query_url(query) + params = query_url_params(query) + method = query.reverse_geocode? ? "reverse" : "search" "http://nominatim.openstreetmap.org/#{method}?" + hash_to_query(params) end end diff --git a/lib/geocoder/results/mapquest.rb b/lib/geocoder/results/mapquest.rb index 8d2b6022f704e68122f1c56c1639349c2f225ee1..f977a6b5f5afb5e26aa8303e29723140daaae04b 100644 --- a/lib/geocoder/results/mapquest.rb +++ b/lib/geocoder/results/mapquest.rb @@ -1,66 +1,7 @@ require 'geocoder/results/base' +require 'geocoder/results/nominatim' module Geocoder::Result - class Mapquest < Base - - def house_number - @data['address']['house_number'] - end - - def address - @data['display_name'] - end - - def street - @data['address']['road'] - end - - def city - @data['address']['city'] - end - - def village - @data['address']['villiage'] - end - - def town - @data['address']['town'] - end - - def state - @data['address']['state'] - end - - alias_method :state_code, :state - - def postal_code - @data['address']['postcode'] - end - - def county - @data['address']['county'] - end - - def country - @data['address']['country'] - end - - def country_code - @data['address']['country_code'] - end - - def coordinates - [@data['lat'].to_f, @data['lon'].to_f] - end - - def self.response_attributes - %w[place_id boundingbox license polygonpoints display_name class type stadium suburb] - end - - response_attributes.each do |a| - define_method a do - @data[a] - end - end + class Mapquest < Nominatim end end diff --git a/test/test_helper.rb b/test/test_helper.rb index aa7d6d7a2b5607fde88ed8359170922fe05d57d0..fcdd13381f4def69fef9b672ba261aaee3238ee9 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -163,7 +163,7 @@ module Geocoder end end - class Mapquest < Base + class Mapquest < Nominatim private #----------------------------------------------------------------- def fetch_raw_data(query) raise TimeoutError if query.text == "timeout"