Class: GeoNamesAPI::Base

Inherits:
Entity
  • Object
show all
Defined in:
lib/geonames_api/base.rb

Direct Known Subclasses

ListEndpoint, SingletonEndpoint

Instance Attribute Summary

Attributes inherited from Entity

#request_params

Class Method Summary collapse

Methods inherited from Entity

#create_attribute, #initialize, #marshal_dump, #marshal_load, #parse_attr, #parse_response, #set_default_type

Constructor Details

This class inherits a constructor from GeoNamesAPI::Entity

Class Method Details

.all(*names_or_params) ⇒ Object



13
14
15
16
17
18
# File 'lib/geonames_api/base.rb', line 13

def self.all(*names_or_params)
  result = where(name_params(names_or_params))
  if result
    endpoint_returns_list? ? result : [result]
  end
end

.find(*names_or_params) ⇒ Object



6
7
8
9
10
11
# File 'lib/geonames_api/base.rb', line 6

def self.find(*names_or_params)
  result = where(name_params(names_or_params))
  if result
    endpoint_returns_list? ? result.first : result
  end
end

.where(params = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/geonames_api/base.rb', line 20

def self.where(params={})
  retries_remaining = GeoNamesAPI.retries
  uri = uri(params)
  begin
    response = make_request(uri)
    unless response.empty?
      parse_response(response, params)
    end
  rescue Timeout => e
    if retries_remaining > 0
      retries_remaining -= 1
      sleep_time = rand * GeoNamesAPI.max_sleep_time_between_retries
      GeoNamesAPI.logger.info("GEONAMES RETRIABLE ERROR: #{e}. Retrying in #{sleep_time}s.") if GeoNamesAPI.logger
      sleep sleep_time
      retry
    else
      raise e
    end
  end
end