Module: Barometer::WeatherService
- Defined in:
- lib/barometer/weather_service.rb,
lib/barometer/weather_services/noaa.rb,
lib/barometer/weather_services/yahoo.rb,
lib/barometer/weather_services/weather_bug.rb,
lib/barometer/weather_services/wunderground.rb
Defined Under Namespace
Classes: KeyRequired, Noaa, NotFound, WeatherBug, Wunderground, Yahoo
Class Method Summary
(collapse)
Class Method Details
+ (Object) measure(*args)
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/barometer/weather_service.rb', line 28
def self.measure(*args)
key = args.shift
query = args.shift
options = args.shift
version = (options || {}).fetch(:version, nil)
response_started_at = Time.now.utc
begin
response = source(key, version).call(query)
if response.complete?
response.status_code = 200
else
response.status_code = 204
end
rescue Barometer::WeatherService::KeyRequired
response = Barometer::Response.new
response.status_code = 401
rescue Barometer::Query::ConversionNotPossible
response = Barometer::Response.new
response.status_code = 406
rescue Barometer::Query::UnsupportedRegion
response = Barometer::Response.new
response.status_code = 406
rescue Timeout::Error
response = Barometer::Response.new
response.status_code = 408
end
response.response_started_at = response_started_at
response.response_ended_at = Time.now.utc
response.source = key
response
end
|
+ (Object) register(key, *args, &block)
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/barometer/weather_service.rb', line 11
def self.register(key, *args, &block)
@@services ||= Barometer::Utils::VersionedRegistration.new
if block_given?
@@services.register(key, *args, &block)
elsif args.size > 0
@@services.register(key, *args)
else
raise ArgumentError
end
end
|
+ (Object) services
7
8
9
|
# File 'lib/barometer/weather_service.rb', line 7
def self.services
@@services
end
|
+ (Object) services=(services)
3
4
5
|
# File 'lib/barometer/weather_service.rb', line 3
def self.services=(services)
@@services = services
end
|
+ (Object) source(key, version = nil)
23
24
25
26
|
# File 'lib/barometer/weather_service.rb', line 23
def self.source(key, version=nil)
@@services ||= Barometer::Utils::VersionedRegistration.new
@@services.find(key, version) or raise NotFound
end
|