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 57 58 59 60 61 62 63 64
|
require "geocoder/lookups/google"
require "geocoder/results/google_places_details"
module Geocoder
module Lookup
class GooglePlacesDetails < Google
def name
"Google Places Details"
end
def required_api_key_parts
["key"]
end
def supported_protocols
[:https]
end
private
def base_query_url(query)
"#{protocol}://maps.googleapis.com/maps/api/place/details/json?"
end
def result_root_attr
'result'
end
def results(query)
result = super(query)
return [result] unless result.is_a? Array
result
end
def fields(query)
if query.options.has_key?(:fields)
return format_fields(query.options[:fields])
end
if configuration.has_key?(:fields)
return format_fields(configuration[:fields])
end
nil # use Google Places defaults
end
def format_fields(*fields)
flattened = fields.flatten.compact
return if flattened.empty?
flattened.join(',')
end
def query_url_google_params(query)
{
placeid: query.text,
fields: fields(query),
language: query.language || configuration.language
}
end
end
end
end
|