Class: Forecast::Adapters::WundergroundAdapter

Inherits:
Object
  • Object
show all
Includes:
Forecast::Adapter
Defined in:
lib/forecast/adapters/wunderground_adapter.rb

Instance Method Summary collapse

Methods included from Forecast::Adapter

#config, included, #initialize, instance, #options

Instance Method Details

#current(latitude, longitude) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/forecast/adapters/wunderground_adapter.rb', line 7

def current(latitude, longitude)
  forecast = nil
  result = get_json(api_url('conditions', latitude, longitude))
  if result
    item = result['current_observation']
    forecast = Forecast.new(latitude: latitude, longitude: longitude)
    forecast.date = Time.rfc822(item['observation_time_rfc822'])
    forecast.temp = get_temp(item['temp_f'])
    forecast.condition = get_condition([item['weather']])
    forecast.orig_condition = item['weather']
  end
  return forecast
end

#daily(latitude, longitude) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/forecast/adapters/wunderground_adapter.rb', line 38

def daily(latitude, longitude)
  forecasts = Forecast::Collection.new
  result = get_json(api_url('forecast', latitude, longitude))
  if result
    items = result['forecast']['simpleforecast']['forecastday']
    items.each do |item|
      forecast = Forecast.new(latitude: latitude, longitude:longitude)
      forecast.date = Time.at(item['date']['epoch'].to_i).to_datetime
      forecast.temp_min = get_temp(item['low']['fahrenheit'])
      forecast.temp_max = get_temp(item['high']['fahrenheit'])
      forecast.temp = (forecast.temp_min + forecast.temp_max) / 2
      forecast.condition = get_condition([item['conditions']])
      forecast.orig_condition = item['conditions']
      forecasts << forecast
     end
  end
  return forecasts
end

#hourly(latitude, longitude) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/forecast/adapters/wunderground_adapter.rb', line 21

def hourly(latitude, longitude)
  forecasts = Forecast::Collection.new
  result = get_json(api_url('hourly', latitude, longitude))
  if result
    items = result['hourly_forecast']
    items.each do |item|
      forecast = Forecast.new(latitude: latitude, longitude:longitude)
      forecast.date = Time.at(item['FCTTIME']['epoch'].to_i).to_datetime
      forecast.temp = get_temp(item['temp']['english'])
      forecast.condition = get_condition([item['condition']])
      forecast.orig_condition = item['condition']
      forecasts << forecast
     end
  end
  return forecasts
end