Class: GeoNamesAPI::Base
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
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
|