Skip to content

Commit 3715f5d

Browse files
committed
Added Xoms, LocalLegend and Destination.
1 parent 2ba52ad commit 3715f5d

File tree

9 files changed

+78
-3
lines changed

9 files changed

+78
-3
lines changed

UPGRADING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The models have been updated and now closer align to the API documentation.
1414
- `Segment` was renamed to `DetailedSegment`, `SummarySegment` was added and `SegmentStats` was removed
1515
- `SegmentEffort` was renamed to `DetailedSegmentEffort` and `SummarySegmentEffort` was added
1616
- `ClubMember` was renamed to `ClubAthlete`, and `ClubAdmin` was removed
17-
- `RunningRace` was removed, `BaseStream`, `StatsVisibility`, `SummaryPRSegmentEffort`, `UpdatableActivity`, and `Waypoint` were added.
17+
- `RunningRace` was removed, `BaseStream`, `StatsVisibility`, `SummaryPRSegmentEffort`, `UpdatableActivity`, `Xoms`, `Destination`, `LocalLegend` and `Waypoint` were added.
1818

1919
There are several API changes.
2020

lib/strava-ruby-client.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
require_relative 'strava/models/club_athlete'
4848
require_relative 'strava/models/club_event'
4949
require_relative 'strava/models/comment'
50+
require_relative 'strava/models/destination'
5051
require_relative 'strava/models/detailed_activity'
5152
require_relative 'strava/models/detailed_athlete'
5253
require_relative 'strava/models/detailed_club'
@@ -59,6 +60,7 @@
5960
require_relative 'strava/models/heart_rate_zone_ranges'
6061
require_relative 'strava/models/kudoser'
6162
require_relative 'strava/models/lap'
63+
require_relative 'strava/models/local_legend'
6264
require_relative 'strava/models/map'
6365
require_relative 'strava/models/meta_activity'
6466
require_relative 'strava/models/meta_athlete'
@@ -84,6 +86,7 @@
8486
require_relative 'strava/models/updatable_activity'
8587
require_relative 'strava/models/upload'
8688
require_relative 'strava/models/waypoint'
89+
require_relative 'strava/models/xoms'
8790
require_relative 'strava/models/zone_range'
8891
require_relative 'strava/models/zones'
8992

lib/strava/models/destination.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
3+
module Strava
4+
module Models
5+
# Undocumented
6+
class Destination < Strava::Models::Response
7+
property 'href'
8+
property 'type'
9+
property 'name'
10+
end
11+
end
12+
end

lib/strava/models/detailed_segment.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ class DetailedSegment < Strava::Models::Response
3434
property 'elevation_profile'
3535
property 'elevation_profiles'
3636
property 'starred'
37-
property 'xoms' # TODO
38-
property 'local_legend' # TODO
37+
property 'xoms', transform_with: ->(v) { Strava::Models::Xoms.new(v) }
38+
property 'local_legend', transform_with: ->(v) { Strava::Models::LocalLegend.new(v) }
3939
end
4040
end
4141
end

lib/strava/models/local_legend.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# frozen_string_literal: true
2+
3+
module Strava
4+
module Models
5+
# Undocumented
6+
class LocalLegend < Strava::Models::Response
7+
property 'athlete_id'
8+
property 'title'
9+
property 'profile'
10+
property 'effort_description'
11+
property 'effort_count'
12+
property 'effort_counts'
13+
property 'destination'
14+
end
15+
end
16+
end

lib/strava/models/xoms.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
module Strava
4+
module Models
5+
# Undocumented
6+
class Xoms < Strava::Models::Response
7+
property 'kom'
8+
property 'qom'
9+
property 'overall'
10+
property 'destination', transform_with: ->(v) { Strava::Models::Destination.new(v) }
11+
end
12+
end
13+
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"athlete_id": 149514149,
3+
"title": "Alonzo Rodriguez",
4+
"profile": "https://dgalywyr863hv.cloudfront.net/pictures/athletes/149514149/33600350/2/large.jpg",
5+
"effort_description": "22 efforts in the last 90 days",
6+
"effort_count": "22",
7+
"effort_counts": {
8+
"overall": "22 efforts",
9+
"female": "3 efforts"
10+
},
11+
"destination": "strava://segments/1109718/local_legend?categories%5B%5D=overall"
12+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"kom": "1:09",
3+
"qom": "1:31",
4+
"overall": "1:09",
5+
"destination": {
6+
"href": "strava://segments/1109718/leaderboard",
7+
"type": "overall",
8+
"name": "All-Time"
9+
}
10+
}

spec/strava/api/client/endpoints/segments/segment_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@
2929
expect(segment.athlete_count).to eq 1144
3030
expect(segment.star_count).to eq 3
3131
expect(segment.athlete_segment_stats).to be_a Strava::Models::SummarySegmentEffort
32+
expect(segment.xoms).to be_a Strava::Models::Xoms
33+
expect(segment.xoms.kom).to eq '1:09'
34+
expect(segment.xoms.qom).to eq '1:31'
35+
expect(segment.xoms.overall).to eq '1:09'
36+
expect(segment.xoms.destination).to be_a Strava::Models::Destination
37+
expect(segment.xoms.destination.name).to eq 'All-Time'
38+
expect(segment.xoms.destination.href).to eq 'strava://segments/1109718/leaderboard'
39+
expect(segment.local_legend).to be_a Strava::Models::LocalLegend
40+
expect(segment.local_legend.athlete_id).to eq 149_514_149
3241
end
3342

3443
it 'returns a segment by id' do

0 commit comments

Comments
 (0)