class HG::Weather::Data
Attributes
cid[RW]
city_name[RW]
condition[RW]
forecast[RW]
key_status[RW]
request[RW]
requested_at[RW]
search_method[RW]
woeid[RW]
Public Class Methods
new(params, host_name, use_ssl = true)
click to toggle source
# File lib/hg/weather/data.rb, line 12 def initialize params, host_name, use_ssl = true query_params = params.map{|k,v| "#{k.to_s}=#{v.to_s}"}.join('&') @request = (use_ssl ? 'https' : 'http') + host_name + '?' + query_params @requested_at = Time.now request_data = JSON.parse(open(self.request).read) if request_data['results'] results = request_data['results'] @key_status = (params[:key] ? (request_data['key_status'] ? :valid : :invalid) : :empty) @city_name = results['city_name'] @search_method = request_data['by'] @cid = results['cid'] @woeid = params[:woeid] if request_data['by'] == 'woeid' @condition = Condition.new(to_current(results)) @forecast = [] results['forecast'].each do |forecast| @forecast << Condition.new(to_forecast(forecast)) end end return self end
Public Instance Methods
to_current(r)
click to toggle source
# File lib/hg/weather/data.rb, line 41 def to_current r { temperature: r['temp'], description: r['description'], slug: r['condition_slug'], wind_speed: r['wind_speedy'], humidity: r['humidity'], image_id: r['img_id'], sunrise: r['sunrise'], sunset: r['sunset'], currently: r['currently'], date: r['date'], time: r['time'], is_forecast: false } end
to_forecast(r)
click to toggle source
TODO: Improve to get year of date
# File lib/hg/weather/data.rb, line 59 def to_forecast r { date: (Weather.locale == :en ? Time.now.year.to_s + '-' + r['date'] : r['date'] + '/' + Time.now.year.to_s), max_temperature: r['max'], min_temperature: r['min'], description: r['description'], image_id: r['img_id'], slug: r['condition'], is_forecast: true } end