class Geocoder::Lookup::Geoapify
Public Instance Methods
name()
click to toggle source
# File lib/geocoder/lookups/geoapify.rb, line 10 def name 'Geoapify' end
required_api_key_parts()
click to toggle source
# File lib/geocoder/lookups/geoapify.rb, line 14 def required_api_key_parts ['api_key'] end
supported_protocols()
click to toggle source
# File lib/geocoder/lookups/geoapify.rb, line 18 def supported_protocols [:https] end
Private Instance Methods
base_query_url(query)
click to toggle source
# File lib/geocoder/lookups/geoapify.rb, line 24 def base_query_url(query) method = if query.reverse_geocode? 'reverse' elsif query.options[:autocomplete] 'autocomplete' else 'search' end "https://api.geoapify.com/v1/geocode/#{method}?" end
query_url_params(query)
click to toggle source
Calls superclass method
# File lib/geocoder/lookups/geoapify.rb, line 53 def query_url_params(query) lang = query.language || configuration.language params = { apiKey: configuration.api_key, lang: lang, limit: query.options[:limit] } if query.reverse_geocode? params.merge!(query_url_params_reverse(query)) else params.merge!(query_url_params_coordinates(query)) end params.merge!(super) end
query_url_params_coordinates(query)
click to toggle source
# File lib/geocoder/lookups/geoapify.rb, line 66 def query_url_params_coordinates(query) { text: query.sanitized_text } end
query_url_params_reverse(query)
click to toggle source
# File lib/geocoder/lookups/geoapify.rb, line 70 def query_url_params_reverse(query) { lat: query.coordinates[0], lon: query.coordinates[1] } end
results(query)
click to toggle source
# File lib/geocoder/lookups/geoapify.rb, line 35 def results(query) return [] unless (doc = fetch_data(query)) # The rest of the status codes should be already handled by the default # functionality as the API returns correct HTTP response codes in most # cases. There may be some unhandled cases still (such as over query # limit reached) but there is not enough documentation to cover them. case doc['statusCode'] when 500 raise_error(Geocoder::InvalidRequest) || Geocoder.log(:warn, doc['message']) end return [] unless doc['type'] == 'FeatureCollection' return [] unless doc['features'] || doc['features'].present? doc['features'] end