class Strava::Activity

Class to represent Strava Activity @see strava.github.io/api/v3/activities/ Strava Activity API Docs

Constants

ATTRIBUTES

Attributes

gear[R]
photos_info[R]

Public Instance Methods

comment(message) click to toggle source
# File lib/strava/activity.rb, line 99
def comment(message)
  res = client.post(path_comments, text: message).to_h
end
comments(per_page: nil, page: nil) click to toggle source
# File lib/strava/activity.rb, line 55
def comments(per_page: nil, page: nil)
  if page || per_page
    get_comments(per_page: per_page, page: page)
  else
    get_comments if @comments.empty?
    @comments.values
  end
end
get_comments(per_page: nil, page: nil) click to toggle source
# File lib/strava/activity.rb, line 117
def get_comments(per_page: nil, page: nil)
  res = client.get(path_comments, per_page: per_page, page: page).to_a
  parse_data(@comments, res, klass: Comment, client: @client)
end
get_details() click to toggle source
# File lib/strava/activity.rb, line 108
def get_details
  return self if detailed?
  res = client.get(path_base).to_h
  update(res)
end
get_kudos(per_page: nil, page: nil) click to toggle source
# File lib/strava/activity.rb, line 113
def get_kudos(per_page: nil, page: nil)
  res = client.get(path_kudos, per_page: per_page, page: page).to_a
  parse_data(@kudos, res, klass: Athlete, client: @client)
end
get_laps() click to toggle source
# File lib/strava/activity.rb, line 137
def get_laps
  res = client.get(path_laps).to_a
  parse_data(@laps, res, klass: Lap, client: @client)
end
get_photos(per_page: nil, page: nil) click to toggle source
# File lib/strava/activity.rb, line 121
def get_photos(per_page: nil, page: nil)
  res = client.get(path_photos, per_page: per_page, page: page).to_a
  parse_data(@photos, res, klass: Photo, client: @client)
end
get_streams(types = '', **params) click to toggle source
# File lib/strava/activity.rb, line 129
def get_streams(types = '', **params)
  res = client.get(path_streams + types.join(','), **params).to_a
  @streams.update(res)
end
get_zones() click to toggle source
# File lib/strava/activity.rb, line 133
def get_zones
  res = client.get(path_zones).to_a
  @zones = res
end
kudo() click to toggle source
# File lib/strava/activity.rb, line 103
def kudo
  res = client.post(path_kudos).to_h
end
kudos(per_page: nil, page: nil) click to toggle source
# File lib/strava/activity.rb, line 46
def kudos(per_page: nil, page: nil)
  if page || per_page
    get_kudos(per_page: per_page, page: page)
  else
    get_kudos if @kudos.empty?
    @kudos.values
  end
end
laps() click to toggle source
# File lib/strava/activity.rb, line 94
def laps
  get_laps if @laps.empty?
  @laps.values
end
path_base() click to toggle source
# File lib/strava/activity.rb, line 143
def path_base
  "activities/#{id}"
end
path_comments() click to toggle source
# File lib/strava/activity.rb, line 149
def path_comments
  "#{path_base}/comments"
end
path_kudos() click to toggle source
# File lib/strava/activity.rb, line 146
def path_kudos
  "#{path_base}/kudos"
end
path_laps() click to toggle source
# File lib/strava/activity.rb, line 164
def path_laps
  "#{path_base}/laps"
end
path_photos() click to toggle source
# File lib/strava/activity.rb, line 152
def path_photos
  "#{path_base}/photos?photo_sources=true"
end
path_streams() click to toggle source
# File lib/strava/activity.rb, line 158
def path_streams
  "#{path_base}/streams/"
end
path_zones() click to toggle source
# File lib/strava/activity.rb, line 161
def path_zones
  "#{path_base}/zones"
end
photos(per_page: nil, page: nil) click to toggle source
# File lib/strava/activity.rb, line 64
def photos(per_page: nil, page: nil)
  if page || per_page
    get_photos(per_page: per_page, page: page)
  else
    get_photos if @photos.empty?
    @photos.values
  end
end
segment_efforts() click to toggle source
# File lib/strava/activity.rb, line 42
def segment_efforts
  @segment_efforts.values
end
streams(types = [:time, :distance, :latlng], **params) click to toggle source
# File lib/strava/activity.rb, line 84
def streams(types = [:time, :distance, :latlng], **params)
  get_streams(types, **params) if @streams.empty?
  @streams
end
zones() click to toggle source
# File lib/strava/activity.rb, line 89
def zones
  get_zones unless @zones
  @zones
end

Private Instance Methods

set_ivars() click to toggle source

Set up instance variables upon instantiation.

@abstract @return [void]

# File lib/strava/activity.rb, line 13
        def set_ivars
  @kudos            = {}
  @comments         = {}
  @photos           = {}
  @laps             = {}
  @segment_efforts  = {}
  @related          = {}
  @streams          = StreamSet.new
end
update(data, **opts) click to toggle source

Updates activity with passed data attributes.

@param data [Hash] data hash containing activity data @return [self]

# File lib/strava/activity.rb, line 27
        def update(data, **opts)
  @response       = data
  @id             = data["id"]
  @resource_state = data['resource_state']
  @photos_info    = data['photos']
  @laps_info      = data['laps']
  @gear           = Gear.new(data['gear'], client: client) if data['gear']
  ATTRIBUTES.each do |attr|
    instance_variable_set("@#{attr}", data[attr.to_s])
  end

  parse_data(@segment_efforts, data["segment_efforts"], klass: SegmentEffort, client: @client) if data["segment_efforts"]
  self
end