class GarminConnect::Activity
Attributes
attributes[R]
Public Class Methods
activities(format = nil)
click to toggle source
# File lib/garmin_connect/activity.rb, line 164 def activities(format = nil) Base.request(self.base, format, "/activities") end
base()
click to toggle source
# File lib/garmin_connect/activity.rb, line 146 def base 'http://connect.garmin.com/proxy/activity-service-1.3/' end
details(id, format = nil)
click to toggle source
# File lib/garmin_connect/activity.rb, line 152 def details(id, format = nil) h = Base.request(self.base, format, "/activityDetails/#{validate_id(id)}")['com.garmin.activity.details.json.ActivityDetails'] Base::Hash[h] end
get(id, format = nil)
click to toggle source
# File lib/garmin_connect/activity.rb, line 149 def get(id, format = nil) Base.request(self.base, format, "/activity/#{validate_id(id)}")['activity'] end
new(data)
click to toggle source
# File lib/garmin_connect/activity.rb, line 67 def initialize(data) case data when Hash # nil when Integer, String data = self.class.get(data) end @metrics = nil @attributes = data end
validate_id(id)
click to toggle source
def course(id, format = nil)
h = Base.request(self.base, format, "/course/#{validate_id(id)}")['com.garmin.activity.details.json.ActivityDetails'] Base::Hash[h]
end
# File lib/garmin_connect/activity.rb, line 160 def validate_id(id) id = Integer === id ? id : id.split('/').last end
Public Instance Methods
[](something)
click to toggle source
# File lib/garmin_connect/activity.rb, line 77 def [](something) @attributes[something] end
avg_hr()
click to toggle source
# File lib/garmin_connect/activity.rb, line 91 def avg_hr hr_data? and self.activitySummary.WeightedMeanHeartRate.bpm.value.to_i end
details()
click to toggle source
# File lib/garmin_connect/activity.rb, line 109 def details @details ||= self.class.details(self.activityId) end
distance()
click to toggle source
# File lib/garmin_connect/activity.rb, line 94 def distance activitySummary.SumDistance.value.to_f.round(2) end
dur_secs()
click to toggle source
# File lib/garmin_connect/activity.rb, line 103 def dur_secs activitySummary.SumElapsedDuration.value.to_f.round end
duration()
click to toggle source
# File lib/garmin_connect/activity.rb, line 106 def duration Time.at(self.dur_secs).strftime("%M:%S") end
hr_data?()
click to toggle source
# File lib/garmin_connect/activity.rb, line 87 def hr_data? # puts @attributes.keys activitySummary.has_key? 'WeightedMeanHeartRate' end
id()
click to toggle source
# File lib/garmin_connect/activity.rb, line 80 def id self.activityId end
latlong(what = :begin)
click to toggle source
# File lib/garmin_connect/activity.rb, line 118 def latlong(what = :begin) case what when :begin [self.activitySummary.BeginLatitude.value, self.activitySummary.BeginLongitude.value] when :end [self.activitySummary.EndLatitude.value, self.activitySummary.EndLongitude.value] end end
method_missing(method, *args)
click to toggle source
Calls superclass method
# File lib/garmin_connect/activity.rb, line 126 def method_missing(method, *args) if args.size == 1 && method.to_s =~ /(.*)=$/ # ripped from hashie return @attributes[$1.to_s] = args.first end obj = @attributes[method.to_s] case obj when Base::Hash, Base::Array obj when Hash, Array @attributes[method.to_s] = Base.generate(obj) when nil super(method, *args) else obj end end
metrics()
click to toggle source
# File lib/garmin_connect/activity.rb, line 112 def metrics return @metrics if @metrics metric_data = details.measurements.sort_by{ |hash| hash['metricsIndex'] }.map{ |hash| hash['key'] } # puts metric_data.inspect @metrics ||= Metric.init_multiple(details.metrics, metric_data) end
pace()
click to toggle source
# File lib/garmin_connect/activity.rb, line 100 def pace Time.at(self.pace_secs).strftime("%M:%S") end
pace_secs()
click to toggle source
# File lib/garmin_connect/activity.rb, line 97 def pace_secs (activitySummary.WeightedMeanMovingPace.value.to_f * 60).round end
time(what = :begin)
click to toggle source
# File lib/garmin_connect/activity.rb, line 83 def time(what = :begin) h = what == :begin ? self.activitySummary.BeginTimestamp : self.activitySummary.EndTimestamp ActiveSupport::TimeWithZone.new(Time.parse(h.value), ActiveSupport::TimeZone.new(h.uom)) end
url()
click to toggle source
# File lib/garmin_connect/activity.rb, line 142 def url "http://connect.garmin.com/activity/#{self.activityId}" end