Class: Geocoder::Lookup::Base
- Inherits:
-
Object
- Object
- Geocoder::Lookup::Base
- Defined in:
- lib/geocoder/lookups/base.rb
Direct Known Subclasses
Amap, Baidu, BanDataGouvFr, Bing, DbIpCom, Esri, Freegeoip, GeocoderCa, GeocoderUs, Geocodio, Geoip2, GeoportailLu, Google, Here, Ip2location, IpapiCom, IpdataCo, IpinfoIo, Ipstack, Latlon, Mapbox, Mapquest, Maxmind, MaxmindGeoip2, MaxmindLocal, Nominatim, Opencagedata, Pelias, Pointpin, PostcodeAnywhereUk, PostcodesIo, SmartyStreets, Telize, Tencent, Test, Yandex
Instance Method Summary collapse
-
#cache ⇒ Object
The working Cache object.
-
#handle ⇒ Object
Symbol which is used in configuration to refer to this Lookup.
-
#initialize ⇒ Base
constructor
A new instance of Base.
-
#map_link_url(coordinates) ⇒ Object
Return the URL for a map of the given coordinates.
-
#name ⇒ Object
Human-readable name of the geocoding API.
-
#query_url(query) ⇒ Object
URL to use for querying the geocoding engine.
-
#required_api_key_parts ⇒ Object
Array containing string descriptions of keys required by the API.
-
#search(query, options = {}) ⇒ Object
Query the geocoding API and return a Geocoder::Result object.
-
#supported_protocols ⇒ Object
Array containing the protocols supported by the api.
Constructor Details
#initialize ⇒ Base
Returns a new instance of Base.
17 18 19 |
# File 'lib/geocoder/lookups/base.rb', line 17 def initialize @cache = nil end |
Instance Method Details
#cache ⇒ Object
The working Cache object.
85 86 87 88 89 90 |
# File 'lib/geocoder/lookups/base.rb', line 85 def cache if @cache.nil? and store = configuration.cache @cache = Cache.new(store, configuration.cache_prefix) end @cache end |
#handle ⇒ Object
Symbol which is used in configuration to refer to this Lookup.
31 32 33 34 |
# File 'lib/geocoder/lookups/base.rb', line 31 def handle str = self.class.to_s str[str.rindex(':')+1..-1].gsub(/([a-z\d]+)([A-Z])/,'\1_\2').downcase.to_sym end |
#map_link_url(coordinates) ⇒ Object
Return the URL for a map of the given coordinates.
Not necessarily implemented by all subclasses as only some lookups also provide maps.
59 60 61 |
# File 'lib/geocoder/lookups/base.rb', line 59 def map_link_url(coordinates) nil end |
#name ⇒ Object
Human-readable name of the geocoding API.
24 25 26 |
# File 'lib/geocoder/lookups/base.rb', line 24 def name fail end |
#query_url(query) ⇒ Object
URL to use for querying the geocoding engine.
Subclasses should not modify this method. Instead they should define base_query_url and url_query_string. If absolutely necessary to subclss this method, they must also subclass #cache_key.
78 79 80 |
# File 'lib/geocoder/lookups/base.rb', line 78 def query_url(query) base_query_url(query) + url_query_string(query) end |
#required_api_key_parts ⇒ Object
Array containing string descriptions of keys required by the API. Empty array if keys are optional or not required.
67 68 69 |
# File 'lib/geocoder/lookups/base.rb', line 67 def required_api_key_parts [] end |
#search(query, options = {}) ⇒ Object
Query the geocoding API and return a Geocoder::Result object. Returns nil
on timeout or error.
Takes a search string (eg: “Mississippi Coast Coliseumf, Biloxi, MS”, “205.128.54.202”) for geocoding, or coordinates (latitude, longitude) for reverse geocoding. Returns an array of Geocoder::Result
s.
44 45 46 47 48 49 50 51 |
# File 'lib/geocoder/lookups/base.rb', line 44 def search(query, = {}) query = Geocoder::Query.new(query, ) unless query.is_a?(Geocoder::Query) results(query).map{ |r| result = result_class.new(r) result.cache_hit = @cache_hit if cache result } end |
#supported_protocols ⇒ Object
Array containing the protocols supported by the api. Should be set to [:http] if only HTTP is supported or [:https] if only HTTPS is supported.
97 98 99 |
# File 'lib/geocoder/lookups/base.rb', line 97 def supported_protocols [:http, :https] end |