Class: PM25::Base
- Inherits:
-
Object
show all
- Includes:
- HTTParty
- Defined in:
- lib/pm25/base.rb
Constant Summary
collapse
- ATTRS =
%w(Conc AQI Desc ReadingDateTime)
Class Method Summary
collapse
Class Method Details
.all ⇒ Object
16
17
18
|
# File 'lib/pm25/base.rb', line 16
def self.all
get.select{|x| x.key? 'AQI'}.map(&method(:clean_up))
end
|
.clean_up(data) ⇒ Object
50
51
52
|
# File 'lib/pm25/base.rb', line 50
def self.clean_up(data)
parse slice(data)
end
|
.get ⇒ Object
12
13
14
|
# File 'lib/pm25/base.rb', line 12
def self.get
Hash.from_xml(HTTParty.get(url).body)['rss']['channel']['item']
end
|
.last ⇒ Object
Also known as:
latest
20
21
22
|
# File 'lib/pm25/base.rb', line 20
def self.last
clean_up(get.find{|x| x.key? 'AQI'})
end
|
.parse(data) ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/pm25/base.rb', line 41
def self.parse(data)
parsed_data = {}
parsed_data['Conc'] = data['Conc'].to_f
parsed_data['AQI'] = data['AQI'].to_i
parsed_data['Desc'] = data['Desc'].to_s
parsed_data['ReadingDateTime'] = DateTime.strptime(data['ReadingDateTime'], '%m/%d/%Y %I:%M:%S %p')
parsed_data
end
|
.slice(data) ⇒ Object
37
38
39
|
# File 'lib/pm25/base.rb', line 37
def self.slice(data)
data.slice(*ATTRS)
end
|
.uri ⇒ Object
27
28
29
30
31
|
# File 'lib/pm25/base.rb', line 27
def self.uri
raise NotImplementedError, "Please set value for 'city_id' class attributes in '#{self.name}' class." unless self.city_id
self.base_uri.path = "/web/rss/1/#{self.city_id.to_s}.xml"
self.base_uri
end
|
.url ⇒ Object
33
34
35
|
# File 'lib/pm25/base.rb', line 33
def self.url
uri.to_s
end
|