module AirMonitor
Constants
- VERSION
Public Class Methods
new(zip_code=nil, params={})
click to toggle source
# File lib/air_monitor.rb, line 4 def initialize(zip_code=nil, params={}) @zip_code = zip_code @checked_concerns = params.map {|concern, value| concern if value == "1"}.compact end
Public Instance Methods
active_outdoors?(day)
click to toggle source
# File lib/air_monitor.rb, line 104 def active_outdoors?(day) condition_indicators = ["O3"] alert?(condition_indicators, day) end
alert?(condition_indicators, day)
click to toggle source
# File lib/air_monitor.rb, line 113 def alert?(condition_indicators, day) if day == "today" contaminates_aqis = observed_contaminates_and_aqi_values else contaminates_aqis = forecasted_contaminates_and_aqi_values end present_condition_indicators = contaminates_aqis.keys & condition_indicators present_condition_indicators.any?{|indicator| contaminates_aqis[indicator] > 100} || red_zone?(day) end
children?(day)
click to toggle source
# File lib/air_monitor.rb, line 94 def children?(day) condition_indicators = ["O3","PM2.5","PM10"] alert?(condition_indicators, day) end
clean_checked_concerns()
click to toggle source
# File lib/air_monitor.rb, line 70 def clean_checked_concerns concerns = checked_concerns.map {|concern| concern.gsub("_", " ")} concerns.map! do |concern| if concern == concerns.last && concerns.count > 1 "and #{concern}." elsif concerns.count > 1 concern + "," else concern + "." end end concerns.join(" ") end
forecast()
click to toggle source
# File lib/air_monitor.rb, line 9 def forecast tomorrow = Date.today + 1 Faraday.get("http://www.airnowapi.org/aq/forecast/zipCode/?format=application/json&zipCode=#{@zip_code}&date=#{tomorrow.strftime('%Y-%m-%d')}&distance=100&API_KEY=6262A4E6-45AF-4316-8485-CB1A259D7231") end
forecasted_aqi_values()
click to toggle source
# File lib/air_monitor.rb, line 54 def forecasted_aqi_values parsed_forecast.map {|data| data["AQI"]} end
forecasted_contaminates()
click to toggle source
# File lib/air_monitor.rb, line 30 def forecasted_contaminates parsed_forecast.map {|data| data["ParameterName"]} end
forecasted_contaminates_and_aqi_values()
click to toggle source
# File lib/air_monitor.rb, line 58 def forecasted_contaminates_and_aqi_values Hash[forecasted_contaminates.zip forecasted_aqi_values] end
forecasted_contaminates_and_levels()
click to toggle source
# File lib/air_monitor.rb, line 34 def forecasted_contaminates_and_levels Hash[forecasted_contaminates.zip forecasted_levels] end
forecasted_levels()
click to toggle source
# File lib/air_monitor.rb, line 26 def forecasted_levels parsed_forecast.map {|data| data["Category"]["Name"]} end
general_population?(day)
click to toggle source
# File lib/air_monitor.rb, line 109 def general_population?(day) red_zone?(day) end
health_effects?(day)
click to toggle source
# File lib/air_monitor.rb, line 132 def health_effects?(day) check_alerts_methods = checked_concerns.map {|concern| concern + "?"} alerts = check_alerts_methods.map {|method| send(method, day)} alerts.include?(true) end
heart_disease?(day)
click to toggle source
# File lib/air_monitor.rb, line 89 def heart_disease?(day) condition_indicators = ["PM2.5","PM10"] alert?(condition_indicators, day) end
lung_disease?(day)
click to toggle source
# File lib/air_monitor.rb, line 84 def lung_disease?(day) condition_indicators = ["O3","PM2.5","PM10"] alert?(condition_indicators, day) end
observed()
click to toggle source
# File lib/air_monitor.rb, line 14 def observed Faraday.get("http://www.airnowapi.org/aq/observation/zipCode/current/?format=application/json&zipCode=#{@zip_code}&distance=25&API_KEY=6262A4E6-45AF-4316-8485-CB1A259D7231") end
observed_aqi_values()
click to toggle source
# File lib/air_monitor.rb, line 50 def observed_aqi_values parsed_observed.map {|data| data["AQI"]} end
observed_contaminates()
click to toggle source
# File lib/air_monitor.rb, line 42 def observed_contaminates parsed_observed.map {|data| data["ParameterName"]} end
observed_contaminates_and_aqi_values()
click to toggle source
# File lib/air_monitor.rb, line 62 def observed_contaminates_and_aqi_values Hash[observed_contaminates.zip observed_aqi_values] end
observed_contaminates_and_levels()
click to toggle source
# File lib/air_monitor.rb, line 46 def observed_contaminates_and_levels Hash[observed_contaminates.zip observed_levels] end
observed_levels()
click to toggle source
# File lib/air_monitor.rb, line 38 def observed_levels parsed_observed.map {|data| data["Category"]["Name"]} end
older_adult?(day)
click to toggle source
# File lib/air_monitor.rb, line 99 def older_adult?(day) condition_indicators = ["O3","PM2.5","PM10"] alert?(condition_indicators, day) end
parsed_forecast()
click to toggle source
# File lib/air_monitor.rb, line 18 def parsed_forecast JSON.parse(forecast.body) end
parsed_observed()
click to toggle source
# File lib/air_monitor.rb, line 22 def parsed_observed JSON.parse(observed.body) end
red_zone?(day)
click to toggle source
# File lib/air_monitor.rb, line 124 def red_zone?(day) if day == "today" observed_contaminates_and_aqi_values.values.any? {|value| value > 150} else forecasted_contaminates_and_aqi_values.values.any? {|value| value > 150} end end
reporting_area()
click to toggle source
# File lib/air_monitor.rb, line 66 def reporting_area parsed_observed[0]["ReportingArea"] end