Class: Geocoder::Lookup::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/geocoder/lookups/base.rb

Instance Method Summary collapse

Constructor Details

#initializeBase

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

#cacheObject

The working Cache object.



85
86
87
88
89
90
91
# File 'lib/geocoder/lookups/base.rb', line 85

def cache
  if @cache.nil? and store = configuration.cache
    cache_options = configuration.cache_options
    @cache = Cache.new(store, cache_options)
  end
  @cache
end

#handleObject

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

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

#nameObject

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_partsObject

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::Results.



44
45
46
47
48
49
50
51
# File 'lib/geocoder/lookups/base.rb', line 44

def search(query, options = {})
  query = Geocoder::Query.new(query, options) 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_protocolsObject

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.



98
99
100
# File 'lib/geocoder/lookups/base.rb', line 98

def supported_protocols
  [:http, :https]
end