class Forecaster
Constants
- DARKSKY_URL
Attributes
forecast[R]
Public Class Methods
new(coordinates, units, forecast_time, options = {})
click to toggle source
# File lib/meteorologist/forecaster.rb, line 5 def initialize(coordinates, units, forecast_time, options = {}) data = options.fetch(:data) { get_data(coordinates, units, forecast_time) } @forecast = validate_and_parse(data) end
Public Instance Methods
apparent_maximum_temperature()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 54 def apparent_maximum_temperature todays('apparentTemperatureMax') end
apparent_minimum_temperature()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 46 def apparent_minimum_temperature todays('apparentTemperatureMin') end
current_apparent_temperature()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 18 def current_apparent_temperature current('apparentTemperature') end
current_humidity()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 22 def current_humidity "#{(current('humidity') * 100).to_i}%" end
current_summary()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 10 def current_summary current('summary') end
current_temperature()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 14 def current_temperature current('temperature') end
maximum_temperature()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 50 def maximum_temperature todays('temperatureMax') end
minimum_temperature()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 42 def minimum_temperature todays('temperatureMin') end
moon_phase()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 38 def moon_phase todays('moonPhase') end
sunrise()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 30 def sunrise get_time(todays('sunriseTime')) end
sunset()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 34 def sunset get_time(todays('sunsetTime')) end
todays_summary()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 26 def todays_summary todays('summary') end
Private Instance Methods
current(key)
click to toggle source
# File lib/meteorologist/forecaster.rb, line 75 def current(key) forecast['currently'][key] end
get_data(coordinates, units, forecast_time)
click to toggle source
# File lib/meteorologist/forecaster.rb, line 61 def get_data(coordinates, units, forecast_time) time = forecast_time.to_i url = "#{DARKSKY_URL}/#{ENV['DARKSKYSECRET']}/#{coordinates},#{time}?units=#{units}" `curl -s #{url}` end
get_time(integer)
click to toggle source
# File lib/meteorologist/forecaster.rb, line 83 def get_time(integer) (Time.at(integer) + offset).strftime('%H:%M') end
offset()
click to toggle source
# File lib/meteorologist/forecaster.rb, line 87 def offset @offset ||= forecast['offset'].to_i * 3600 end
todays(key)
click to toggle source
# File lib/meteorologist/forecaster.rb, line 79 def todays(key) forecast['daily']['data'][0][key] end
validate_and_parse(forecast)
click to toggle source
# File lib/meteorologist/forecaster.rb, line 68 def validate_and_parse(forecast) response = JSON.parse(forecast) raise ArgumentError, "Location not found" if response['error'] response end