Class: PM25::Base

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/pm25/base.rb

Direct Known Subclasses

Beijing, Chengdu, Guangzhou, Shanghai, Shenyang

Constant Summary collapse

ATTRS =
%w(Conc AQI Desc ReadingDateTime)

Class Method Summary collapse

Class Method Details

.allObject



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

.getObject



12
13
14
# File 'lib/pm25/base.rb', line 12

def self.get
  Hash.from_xml(HTTParty.get(url).body)['rss']['channel']['item']
end

.lastObject 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

.uriObject



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

.urlObject



33
34
35
# File 'lib/pm25/base.rb', line 33

def self.url
  uri.to_s
end