1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
require 'geocoder/lookups/base'
require 'geocoder/results/azure'
module Geocoder::Lookup
class Azure < Base
def name
'Azure'
end
def required_api_key_parts
['api_key']
end
def supported_protocols
[:https]
end
private
def base_query_url(query)
host = 'atlas.microsoft.com/search/address'
if query.reverse_geocode?
"#{protocol}://#{host}/reverse/json?"
else
"#{protocol}://#{host}/json?"
end
end
def query_url_params(query)
params = {
'api-version' => 1.0,
'language' => query.options[:language] || 'en',
'limit' => configuration[:limit] || 10,
'query' => query.sanitized_text,
'subscription-key' => configuration.api_key
}
params.merge(super)
end
def results(query)
return [] unless (doc = fetch_data(query))
return doc if doc['error']
if doc['results']&.any?
doc['results']
elsif doc['addresses']&.any?
doc['addresses']
else
[]
end
end
end
end
|