Class: Cimis::Station

Inherits:
Object
  • Object
show all
Defined in:
lib/cimis/station.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Station

Returns a new instance of Station.



22
23
24
25
# File 'lib/cimis/station.rb', line 22

def initialize(params)
  processed_params = process_params(params)
  super(processed_params)
end

Class Method Details

.allObject



27
28
29
30
31
32
# File 'lib/cimis/station.rb', line 27

def self.all
  response = Cimis.connection.get("station")
  response.body["Stations"].map do |station|
    new(station)
  end
end

Instance Method Details

#data(options = {}) ⇒ Object



72
73
74
75
76
77
78
79
# File 'lib/cimis/station.rb', line 72

def data(options = {})
  options.merge!(dataItems: hourly_options) if options.delete(:hourly)
  options.merge!({app_key: Cimis.app_key, targets: station_nbr})
  response = Cimis.connection.get("data?#{Cimis.to_query(options)}")
  response.body["Data"]["Providers"].first["Records"].map do |record|
    StationData.new(record)
  end
end

#extract_coordinate(str) ⇒ Object



43
44
45
46
47
# File 'lib/cimis/station.rb', line 43

def extract_coordinate(str)
  word = str.dup
  word = word.split("/").last
  word.strip!
end

#hourly_optionsObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/cimis/station.rb', line 53

def hourly_options
  %w(
    hly-air-tmp
    hly-dew-pnt
    hly-eto
    hly-net-rad
    hly-asce-eto
    hly-asce-etr
    hly-precip
    hly-rel-hum
    hly-res-wind
    hly-soil-tmp
    hly-sol-rad
    hly-vap-pres
    hly-wind-dir
    hly-wind-spd
  ).join(',')
end

#parse_date(date_str) ⇒ Object



49
50
51
# File 'lib/cimis/station.rb', line 49

def parse_date(date_str)
  DateTime.strptime(date_str, "%m/%d/%Y")
end

#process_params(params) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/cimis/station.rb', line 34

def process_params(params)
  symbolized = Cimis.symbolize_keys(params)
  symbolized[:hms_latitude] = extract_coordinate(symbolized[:hms_latitude])
  symbolized[:hms_longitude] = extract_coordinate(symbolized[:hms_longitude])
  symbolized[:connect_date] = parse_date(symbolized[:connect_date])
  symbolized[:disconnect_date] = parse_date(symbolized[:disconnect_date])
  symbolized
end