lib/geocoder/lookups/yandex.rb in geocoder-1.1.5 vs lib/geocoder/lookups/yandex.rb in geocoder-1.1.6

- old
+ new

@@ -2,20 +2,32 @@ require "geocoder/results/yandex" module Geocoder::Lookup class Yandex < Base + def name + "Yandex" + end + def map_link_url(coordinates) "http://maps.yandex.ru/?ll=#{coordinates.reverse.join(',')}" end + def query_url(query) + "#{protocol}://geocode-maps.yandex.ru/1.x/?" + url_query_string(query) + end + private # --------------------------------------------------------------- def results(query) return [] unless doc = fetch_data(query) if err = doc['error'] - warn "Yandex Geocoding API error: #{err['status']} (#{err['message']})." + if err["status"] == 401 and err["message"] == "invalid key" + raise_error(Geocoder::InvalidApiKey) || warn("Invalid API key.") + else + warn "Yandex Geocoding API error: #{err['status']} (#{err['message']})." + end return [] end if doc = doc['response']['GeoObjectCollection'] meta = doc['metaDataProperty']['GeocoderResponseMetaData'] return meta['found'].to_i > 0 ? doc['featureMember'] : [] @@ -29,18 +41,14 @@ if query.reverse_geocode? q = query.coordinates.reverse.join(",") else q = query.sanitized_text end - super.merge( + { :geocode => q, :format => "json", - :plng => "#{Geocoder::Configuration.language}", # supports ru, uk, be - :key => Geocoder::Configuration.api_key - ) - end - - def query_url(query) - "#{protocol}://geocode-maps.yandex.ru/1.x/?" + url_query_string(query) + :plng => "#{configuration.language}", # supports ru, uk, be + :key => configuration.api_key + }.merge(super) end end end