Sha256: e8125b03d70f815cfd764ce37d9a5396ccf2612d30fd0c40e98177fd26a815ff
Contents?: true
Size: 1.99 KB
Versions: 3
Compression:
Stored size: 1.99 KB
Contents
# frozen_string_literal: true require 'geocoder/lookups/base' require 'geocoder/results/geoapify' module Geocoder module Lookup # https://apidocs.geoapify.com/docs/geocoding/api class Geoapify < Base def name 'Geoapify' end def required_api_key_parts ['api_key'] end def supported_protocols [:https] end private 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 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 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 def query_url_params_coordinates(query) { text: query.sanitized_text } end def query_url_params_reverse(query) { lat: query.coordinates[0], lon: query.coordinates[1] } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
geocoder-1.8.3 | lib/geocoder/lookups/geoapify.rb |
geocoder-1.8.2 | lib/geocoder/lookups/geoapify.rb |
geocoder-1.8.1 | lib/geocoder/lookups/geoapify.rb |