class ApiResponseModel
Public Class Methods
new(raw_text)
click to toggle source
# File lib/basis-band/api-response-model.rb, line 5 def initialize(raw_text) @json = JSON.parse(raw_text) # Use the local timezone intentionally @starttime = Time.at(@json['starttime']) end
Public Instance Methods
hash_for_minute(min)
click to toggle source
# File lib/basis-band/api-response-model.rb, line 22 def hash_for_minute(min) t = @starttime + (min * 60) res = {'t' => t.strftime("%Y/%m/%d %H:%M:%S"), 'state' => state_for_time(t.to_i)} for m in @json["metrics"].keys res[m] = @json["metrics"][m]["values"][min] end res end
metric_summary(metric)
click to toggle source
# File lib/basis-band/api-response-model.rb, line 42 def metric_summary(metric) {"avg" => @json["metrics"][metric]["avg"]} end
num_samples()
click to toggle source
# File lib/basis-band/api-response-model.rb, line 31 def num_samples m = @json["metrics"].keys.first @json["metrics"][m]["values"].length end
samples_by_minute()
click to toggle source
# File lib/basis-band/api-response-model.rb, line 36 def samples_by_minute (0...num_samples).map { |x| hash_for_minute(x) } end
state_for_time(t)
click to toggle source
# File lib/basis-band/api-response-model.rb, line 11 def state_for_time(t) matches = @json["bodystates"].select { |s| t >= s[0] && t < s[1] } if matches.length == 1 matches[0][2] else "unknown" end end
summary()
click to toggle source
# File lib/basis-band/api-response-model.rb, line 46 def summary res = {} for m in @json["metrics"].keys res[m] = metric_summary(m) end res end