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