strava-ruby-client 2.3.0 → 3.0.0.pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -48
  3. data/LICENSE.md +1 -1
  4. data/README.md +100 -80
  5. data/bin/strava-activities.rb +2 -0
  6. data/bin/strava-oauth-token +43 -35
  7. data/bin/strava-refresh-token +32 -0
  8. data/lib/strava/api/client.rb +46 -6
  9. data/lib/strava/api/cursor.rb +26 -2
  10. data/lib/strava/api/endpoints/activities.rb +10 -7
  11. data/lib/strava/api/endpoints/athletes.rb +2 -2
  12. data/lib/strava/api/endpoints/clubs.rb +5 -5
  13. data/lib/strava/api/endpoints/gears.rb +1 -1
  14. data/lib/strava/api/endpoints/segment_efforts.rb +2 -2
  15. data/lib/strava/api/endpoints/segments.rb +3 -3
  16. data/lib/strava/api/pagination.rb +1 -2
  17. data/lib/strava/models/achievement.rb +1 -0
  18. data/lib/strava/models/activity_stats.rb +1 -0
  19. data/lib/strava/models/activity_total.rb +5 -9
  20. data/lib/strava/models/activity_zone.rb +4 -1
  21. data/lib/strava/models/base_stream.rb +12 -0
  22. data/lib/strava/models/club_activity.rb +22 -0
  23. data/lib/strava/models/{club_member.rb → club_athlete.rb} +5 -2
  24. data/lib/strava/models/club_event.rb +6 -4
  25. data/lib/strava/models/comment.rb +7 -2
  26. data/lib/strava/models/destination.rb +12 -0
  27. data/lib/strava/models/{activity.rb → detailed_activity.rb} +51 -103
  28. data/lib/strava/models/{athlete.rb → detailed_athlete.rb} +20 -14
  29. data/lib/strava/models/{club.rb → detailed_club.rb} +10 -3
  30. data/lib/strava/models/{gear.rb → detailed_gear.rb} +10 -7
  31. data/lib/strava/models/{photo.rb → detailed_photo.rb} +13 -5
  32. data/lib/strava/models/{photos.rb → detailed_photos.rb} +2 -1
  33. data/lib/strava/models/{segment.rb → detailed_segment.rb} +18 -24
  34. data/lib/strava/models/{segment_effort.rb → detailed_segment_effort.rb} +23 -17
  35. data/lib/strava/models/explorer_segment.rb +8 -5
  36. data/lib/strava/models/heart_rate_zone_ranges.rb +1 -0
  37. data/lib/strava/models/kudoser.rb +1 -0
  38. data/lib/strava/models/lap.rb +18 -16
  39. data/lib/strava/models/lat_lng.rb +46 -0
  40. data/lib/strava/models/local_legend.rb +16 -0
  41. data/lib/strava/models/meta_activity.rb +13 -0
  42. data/lib/strava/models/meta_athlete.rb +14 -0
  43. data/lib/strava/models/meta_club.rb +12 -0
  44. data/lib/strava/models/mixins/{time.rb → average_speed.rb} +6 -29
  45. data/lib/strava/models/mixins/elapsed_time.rb +20 -0
  46. data/lib/strava/models/mixins/elevation_difference.rb +39 -0
  47. data/lib/strava/models/mixins/elevation_gain.rb +39 -0
  48. data/lib/strava/models/mixins/estimated_moving_time.rb +20 -0
  49. data/lib/strava/models/mixins/moving_time.rb +20 -0
  50. data/lib/strava/models/mixins/sport_type.rb +73 -0
  51. data/lib/strava/models/mixins/time_in_hours.rb +26 -0
  52. data/lib/strava/models/mixins/{elevation.rb → total_elevation_gain.rb} +1 -1
  53. data/lib/strava/models/photos_summary.rb +12 -0
  54. data/lib/strava/models/photos_summary_primary.rb +15 -0
  55. data/lib/strava/models/power_zone_ranges.rb +1 -0
  56. data/lib/strava/models/route.rb +14 -13
  57. data/lib/strava/models/similar_activities.rb +2 -0
  58. data/lib/strava/models/split.rb +8 -6
  59. data/lib/strava/models/stats_visibility.rb +11 -0
  60. data/lib/strava/models/stream_set.rb +2 -1
  61. data/lib/strava/models/summary_activity.rb +71 -0
  62. data/lib/strava/models/summary_athlete.rb +31 -0
  63. data/lib/strava/models/summary_club.rb +34 -0
  64. data/lib/strava/models/summary_gear.rb +18 -0
  65. data/lib/strava/models/summary_pr_segment_effort.rb +16 -0
  66. data/lib/strava/models/summary_segment.rb +34 -0
  67. data/lib/strava/models/summary_segment_effort.rb +16 -0
  68. data/lib/strava/models/timed_zone_range.rb +1 -0
  69. data/lib/strava/models/token.rb +1 -1
  70. data/lib/strava/models/trend.rb +1 -0
  71. data/lib/strava/models/updatable_activity.rb +16 -0
  72. data/lib/strava/models/upload.rb +2 -0
  73. data/lib/strava/models/waypoint.rb +15 -0
  74. data/lib/strava/models/xoms.rb +13 -0
  75. data/lib/strava/models/zone_range.rb +1 -0
  76. data/lib/strava/models/zones.rb +1 -0
  77. data/lib/strava/version.rb +1 -1
  78. data/lib/strava/webhooks/models/event.rb +1 -1
  79. data/lib/strava-ruby-client.rb +55 -30
  80. metadata +47 -18
  81. data/lib/strava/api/endpoints/running_races.rb +0 -20
  82. data/lib/strava/models/club_admin.rb +0 -15
  83. data/lib/strava/models/running_race.rb +0 -35
  84. data/lib/strava/models/segment_stats.rb +0 -17
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Strava
4
+ module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-SummarySegment
6
+ class SummarySegment < Strava::Models::Response
7
+ property 'id'
8
+ property 'name'
9
+ property 'activity_type'
10
+ include Mixins::Distance
11
+ property 'average_grade'
12
+ property 'maximum_grade'
13
+ property 'elevation_high'
14
+ property 'elevation_low'
15
+ property 'start_latlng', transform_with: ->(v) { Strava::Models::LatLng.new(v) }
16
+ property 'end_latlng', transform_with: ->(v) { Strava::Models::LatLng.new(v) }
17
+ property 'climb_category'
18
+ property 'city'
19
+ property 'state'
20
+ property 'country'
21
+ property 'private'
22
+ property 'athlete_pr_effort', transform_with: ->(v) { Strava::Models::SummaryPRSegmentEffort.new(v) }
23
+ property 'athlete_segment_stats', transform_with: ->(v) { Strava::Models::SummarySegmentEffort.new(v) }
24
+ # undocumented
25
+ property 'resource_state'
26
+ property 'elevation_profile'
27
+ property 'elevation_profiles'
28
+ property 'hazardous'
29
+ property 'starred'
30
+ property 'starred_date', transform_with: ->(v) { Time.parse(v) }
31
+ property 'pr_time'
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Strava
4
+ module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-SummarySegmentEffort
6
+ class SummarySegmentEffort < Strava::Models::Response
7
+ property 'id'
8
+ property 'activity_id'
9
+ include Mixins::ElapsedTime
10
+ property 'start_date', transform_with: ->(v) { Time.parse(v) }
11
+ include Mixins::StartDateLocal
12
+ include Mixins::Distance
13
+ property 'is_kom'
14
+ end
15
+ end
16
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Strava
4
4
  module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-TimedZoneRange
5
6
  class TimedZoneRange < Strava::Models::Response
6
7
  property 'max'
7
8
  property 'min'
@@ -8,7 +8,7 @@ module Strava
8
8
  property 'refresh_token'
9
9
  property 'expires_in'
10
10
  property 'expires_at', transform_with: ->(v) { Time.at(v) }
11
- property 'athlete', transform_with: ->(v) { Strava::Models::Athlete.new(v) }
11
+ property 'athlete', transform_with: ->(v) { Strava::Models::SummaryAthlete.new(v) }
12
12
  end
13
13
  end
14
14
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Strava
4
4
  module Models
5
+ # Undocumented
5
6
  class Trend < Strava::Models::Response
6
7
  property 'speeds'
7
8
  property 'current_activity_index'
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Strava
4
+ module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-UpdatableActivity
6
+ class UpdatableActivity < Strava::Models::Response
7
+ property 'commute'
8
+ property 'trainer'
9
+ property 'hide_from_home'
10
+ property 'description'
11
+ property 'name'
12
+ property 'sport_type'
13
+ property 'gear_id'
14
+ end
15
+ end
16
+ end
@@ -2,8 +2,10 @@
2
2
 
3
3
  module Strava
4
4
  module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-Upload
5
6
  class Upload < Strava::Models::Response
6
7
  property 'id'
8
+ property 'id_str'
7
9
  property 'external_id'
8
10
  property 'error'
9
11
  property 'status'
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Strava
4
+ module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-Waypoint
6
+ class Waypoint < Strava::Models::Response
7
+ property 'latlng', transform_with: ->(v) { Strava::Models::LatLng.new(v) }
8
+ property 'target_latlng', transform_with: ->(v) { Strava::Models::LatLng.new(v) }
9
+ property 'categories'
10
+ property 'title'
11
+ property 'description'
12
+ property 'distance_into_route'
13
+ end
14
+ end
15
+ end
@@ -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
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Strava
4
4
  module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-ZoneRange
5
6
  class ZoneRange < Strava::Models::Response
6
7
  property 'max'
7
8
  property 'min'
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Strava
4
4
  module Models
5
+ # https://developers.strava.com/docs/reference/#api-models-Zones
5
6
  class Zones < Strava::Models::Response
6
7
  property 'heart_rate', transform_with: ->(v) { Strava::Models::HeartRateZoneRanges.new(v) }
7
8
  property 'power', transform_with: ->(v) { Strava::Models::PowerZoneRanges.new(v) }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Strava
4
- VERSION = '2.3.0'
4
+ VERSION = '3.0.0.pre.1'
5
5
  end
@@ -5,7 +5,7 @@ module Strava
5
5
  module Models
6
6
  class Event < Hashie::Trash
7
7
  property 'object_type'
8
- property 'object_id'
8
+ property 'id', from: 'object_id'
9
9
  property 'aspect_type'
10
10
  property 'updates'
11
11
  property 'owner_id'
@@ -20,50 +20,76 @@ require_relative 'strava/errors/fault'
20
20
  require_relative 'strava/errors/upload_error'
21
21
  require_relative 'strava/errors/ratelimit_error'
22
22
 
23
- require_relative 'strava/models/mixins/time'
23
+ require_relative 'strava/models/mixins/time_in_hours'
24
+ require_relative 'strava/models/mixins/average_speed'
24
25
  require_relative 'strava/models/mixins/distance'
25
- require_relative 'strava/models/mixins/elevation'
26
+ require_relative 'strava/models/mixins/elapsed_time'
27
+ require_relative 'strava/models/mixins/elevation_gain'
28
+ require_relative 'strava/models/mixins/elevation_difference'
29
+ require_relative 'strava/models/mixins/estimated_moving_time'
26
30
  require_relative 'strava/models/mixins/http_response'
31
+ require_relative 'strava/models/mixins/moving_time'
32
+ require_relative 'strava/models/mixins/sport_type'
27
33
  require_relative 'strava/models/mixins/start_date_local'
34
+ require_relative 'strava/models/mixins/total_elevation_gain'
28
35
 
29
36
  require_relative 'strava/models/model'
30
37
  require_relative 'strava/models/response'
31
38
  require_relative 'strava/models/token'
32
- require_relative 'strava/models/athlete'
33
- require_relative 'strava/models/map'
34
- require_relative 'strava/models/activity'
35
- require_relative 'strava/models/club'
36
- require_relative 'strava/models/club_admin'
37
- require_relative 'strava/models/club_event'
38
- require_relative 'strava/models/club_member'
39
- require_relative 'strava/models/segment_effort'
40
- require_relative 'strava/models/photos'
41
- require_relative 'strava/models/photo'
42
- require_relative 'strava/models/similar_activities'
43
- require_relative 'strava/models/trend'
44
- require_relative 'strava/models/split'
45
- require_relative 'strava/models/lap'
46
- require_relative 'strava/models/gear'
47
- require_relative 'strava/models/segment'
39
+ require_relative 'strava/models/authorization'
40
+
41
+ require_relative 'strava/models/lat_lng'
42
+ require_relative 'strava/models/achievement'
43
+ require_relative 'strava/models/activity_stats'
44
+ require_relative 'strava/models/activity_total'
48
45
  require_relative 'strava/models/activity_zone'
49
- require_relative 'strava/models/timed_zone_range'
46
+ require_relative 'strava/models/base_stream'
47
+ require_relative 'strava/models/club_activity'
48
+ require_relative 'strava/models/club_athlete'
49
+ require_relative 'strava/models/club_event'
50
50
  require_relative 'strava/models/comment'
51
- require_relative 'strava/models/zones'
51
+ require_relative 'strava/models/destination'
52
+ require_relative 'strava/models/detailed_activity'
53
+ require_relative 'strava/models/detailed_athlete'
54
+ require_relative 'strava/models/detailed_club'
55
+ require_relative 'strava/models/detailed_gear'
56
+ require_relative 'strava/models/detailed_photo'
57
+ require_relative 'strava/models/detailed_photos'
58
+ require_relative 'strava/models/detailed_segment_effort'
59
+ require_relative 'strava/models/detailed_segment'
60
+ require_relative 'strava/models/explorer_segment'
52
61
  require_relative 'strava/models/heart_rate_zone_ranges'
62
+ require_relative 'strava/models/kudoser'
63
+ require_relative 'strava/models/lap'
64
+ require_relative 'strava/models/local_legend'
65
+ require_relative 'strava/models/map'
66
+ require_relative 'strava/models/meta_activity'
67
+ require_relative 'strava/models/meta_athlete'
68
+ require_relative 'strava/models/meta_club'
69
+ require_relative 'strava/models/photos_summary_primary'
70
+ require_relative 'strava/models/photos_summary'
53
71
  require_relative 'strava/models/power_zone_ranges'
54
- require_relative 'strava/models/zone_range'
55
- require_relative 'strava/models/activity_total'
56
- require_relative 'strava/models/activity_stats'
57
72
  require_relative 'strava/models/route'
58
- require_relative 'strava/models/kudoser'
59
- require_relative 'strava/models/running_race'
60
- require_relative 'strava/models/achievement'
61
- require_relative 'strava/models/segment_stats'
62
- require_relative 'strava/models/explorer_segment'
73
+ require_relative 'strava/models/similar_activities'
74
+ require_relative 'strava/models/split'
75
+ require_relative 'strava/models/stats_visibility'
63
76
  require_relative 'strava/models/stream_set'
64
77
  require_relative 'strava/models/stream'
78
+ require_relative 'strava/models/summary_activity'
79
+ require_relative 'strava/models/summary_athlete'
80
+ require_relative 'strava/models/summary_club'
81
+ require_relative 'strava/models/summary_gear'
82
+ require_relative 'strava/models/summary_pr_segment_effort'
83
+ require_relative 'strava/models/summary_segment_effort'
84
+ require_relative 'strava/models/summary_segment'
85
+ require_relative 'strava/models/timed_zone_range'
86
+ require_relative 'strava/models/trend'
87
+ require_relative 'strava/models/updatable_activity'
65
88
  require_relative 'strava/models/upload'
66
- require_relative 'strava/models/authorization'
89
+ require_relative 'strava/models/waypoint'
90
+ require_relative 'strava/models/xoms'
91
+ require_relative 'strava/models/zone_range'
92
+ require_relative 'strava/models/zones'
67
93
 
68
94
  require_relative 'strava/web/raise_response_error'
69
95
  require_relative 'strava/web/connection'
@@ -91,7 +117,6 @@ require_relative 'strava/api/endpoints/athletes'
91
117
  require_relative 'strava/api/endpoints/clubs'
92
118
  require_relative 'strava/api/endpoints/gears'
93
119
  require_relative 'strava/api/endpoints/routes'
94
- require_relative 'strava/api/endpoints/running_races'
95
120
  require_relative 'strava/api/endpoints/segment_efforts'
96
121
  require_relative 'strava/api/endpoints/segments'
97
122
  require_relative 'strava/api/endpoints/streams'
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strava-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 3.0.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2025-10-20 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: activesupport
@@ -65,6 +66,7 @@ dependencies:
65
66
  - - ">="
66
67
  - !ruby/object:Gem::Version
67
68
  version: '0'
69
+ description:
68
70
  email: dblock@dblock.org
69
71
  executables:
70
72
  - strava-oauth-token
@@ -77,6 +79,7 @@ files:
77
79
  - README.md
78
80
  - bin/strava-activities.rb
79
81
  - bin/strava-oauth-token
82
+ - bin/strava-refresh-token
80
83
  - bin/strava-webhooks
81
84
  - lib/strava-ruby-client.rb
82
85
  - lib/strava/api/client.rb
@@ -88,7 +91,6 @@ files:
88
91
  - lib/strava/api/endpoints/gears.rb
89
92
  - lib/strava/api/endpoints/oauth.rb
90
93
  - lib/strava/api/endpoints/routes.rb
91
- - lib/strava/api/endpoints/running_races.rb
92
94
  - lib/strava/api/endpoints/segment_efforts.rb
93
95
  - lib/strava/api/endpoints/segments.rb
94
96
  - lib/strava/api/endpoints/streams.rb
@@ -101,46 +103,71 @@ files:
101
103
  - lib/strava/errors/upload_error.rb
102
104
  - lib/strava/logger.rb
103
105
  - lib/strava/models/achievement.rb
104
- - lib/strava/models/activity.rb
105
106
  - lib/strava/models/activity_stats.rb
106
107
  - lib/strava/models/activity_total.rb
107
108
  - lib/strava/models/activity_zone.rb
108
- - lib/strava/models/athlete.rb
109
109
  - lib/strava/models/authorization.rb
110
- - lib/strava/models/club.rb
111
- - lib/strava/models/club_admin.rb
110
+ - lib/strava/models/base_stream.rb
111
+ - lib/strava/models/club_activity.rb
112
+ - lib/strava/models/club_athlete.rb
112
113
  - lib/strava/models/club_event.rb
113
- - lib/strava/models/club_member.rb
114
114
  - lib/strava/models/comment.rb
115
+ - lib/strava/models/destination.rb
116
+ - lib/strava/models/detailed_activity.rb
117
+ - lib/strava/models/detailed_athlete.rb
118
+ - lib/strava/models/detailed_club.rb
119
+ - lib/strava/models/detailed_gear.rb
120
+ - lib/strava/models/detailed_photo.rb
121
+ - lib/strava/models/detailed_photos.rb
122
+ - lib/strava/models/detailed_segment.rb
123
+ - lib/strava/models/detailed_segment_effort.rb
115
124
  - lib/strava/models/explorer_segment.rb
116
- - lib/strava/models/gear.rb
117
125
  - lib/strava/models/heart_rate_zone_ranges.rb
118
126
  - lib/strava/models/kudoser.rb
119
127
  - lib/strava/models/lap.rb
128
+ - lib/strava/models/lat_lng.rb
129
+ - lib/strava/models/local_legend.rb
120
130
  - lib/strava/models/map.rb
131
+ - lib/strava/models/meta_activity.rb
132
+ - lib/strava/models/meta_athlete.rb
133
+ - lib/strava/models/meta_club.rb
134
+ - lib/strava/models/mixins/average_speed.rb
121
135
  - lib/strava/models/mixins/distance.rb
122
- - lib/strava/models/mixins/elevation.rb
136
+ - lib/strava/models/mixins/elapsed_time.rb
137
+ - lib/strava/models/mixins/elevation_difference.rb
138
+ - lib/strava/models/mixins/elevation_gain.rb
139
+ - lib/strava/models/mixins/estimated_moving_time.rb
123
140
  - lib/strava/models/mixins/http_response.rb
141
+ - lib/strava/models/mixins/moving_time.rb
142
+ - lib/strava/models/mixins/sport_type.rb
124
143
  - lib/strava/models/mixins/start_date_local.rb
125
- - lib/strava/models/mixins/time.rb
144
+ - lib/strava/models/mixins/time_in_hours.rb
145
+ - lib/strava/models/mixins/total_elevation_gain.rb
126
146
  - lib/strava/models/model.rb
127
- - lib/strava/models/photo.rb
128
- - lib/strava/models/photos.rb
147
+ - lib/strava/models/photos_summary.rb
148
+ - lib/strava/models/photos_summary_primary.rb
129
149
  - lib/strava/models/power_zone_ranges.rb
130
150
  - lib/strava/models/response.rb
131
151
  - lib/strava/models/route.rb
132
- - lib/strava/models/running_race.rb
133
- - lib/strava/models/segment.rb
134
- - lib/strava/models/segment_effort.rb
135
- - lib/strava/models/segment_stats.rb
136
152
  - lib/strava/models/similar_activities.rb
137
153
  - lib/strava/models/split.rb
154
+ - lib/strava/models/stats_visibility.rb
138
155
  - lib/strava/models/stream.rb
139
156
  - lib/strava/models/stream_set.rb
157
+ - lib/strava/models/summary_activity.rb
158
+ - lib/strava/models/summary_athlete.rb
159
+ - lib/strava/models/summary_club.rb
160
+ - lib/strava/models/summary_gear.rb
161
+ - lib/strava/models/summary_pr_segment_effort.rb
162
+ - lib/strava/models/summary_segment.rb
163
+ - lib/strava/models/summary_segment_effort.rb
140
164
  - lib/strava/models/timed_zone_range.rb
141
165
  - lib/strava/models/token.rb
142
166
  - lib/strava/models/trend.rb
167
+ - lib/strava/models/updatable_activity.rb
143
168
  - lib/strava/models/upload.rb
169
+ - lib/strava/models/waypoint.rb
170
+ - lib/strava/models/xoms.rb
144
171
  - lib/strava/models/zone_range.rb
145
172
  - lib/strava/models/zones.rb
146
173
  - lib/strava/oauth/client.rb
@@ -163,6 +190,7 @@ licenses:
163
190
  - MIT
164
191
  metadata:
165
192
  rubygems_mfa_required: 'true'
193
+ post_install_message:
166
194
  rdoc_options: []
167
195
  require_paths:
168
196
  - lib
@@ -177,7 +205,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
205
  - !ruby/object:Gem::Version
178
206
  version: '2.5'
179
207
  requirements: []
180
- rubygems_version: 3.6.9
208
+ rubygems_version: 3.5.16
209
+ signing_key:
181
210
  specification_version: 4
182
211
  summary: Strava API Ruby client.
183
212
  test_files: []
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Strava
4
- module Api
5
- module Endpoints
6
- module RunningRaces
7
- #
8
- # Returns a running race for a given identifier.
9
- #
10
- # @option options [String] :id
11
- # The identifier of the running race.
12
- #
13
- def running_race(id_or_options, options = {})
14
- id, options = parse_args(id_or_options, options)
15
- Strava::Models::RunningRace.new(get("running_races/#{id}", options))
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Strava
4
- module Models
5
- class ClubAdmin < Strava::Models::Response
6
- property 'resource_state'
7
- property 'firstname'
8
- property 'lastname'
9
-
10
- def name
11
- [firstname, lastname].compact.join(' ') if firstname || lastname
12
- end
13
- end
14
- end
15
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Strava
4
- module Models
5
- class RunningRace < Strava::Models::Response
6
- include Mixins::Distance
7
-
8
- property 'id'
9
- property 'resource_state'
10
- property 'name'
11
- property 'running_race_type'
12
- property 'distance'
13
- property 'start_date_local', transform_with: ->(v) { Time.parse(v) }
14
- property 'city'
15
- property 'state'
16
- property 'country'
17
- property 'route_ids'
18
- property 'measurement_preference'
19
- property 'url'
20
- property 'website_url'
21
- property 'status'
22
-
23
- def strava_url
24
- "https://www.strava.com/running-races/#{url}" if url
25
- end
26
-
27
- def distance_s
28
- case measurement_preference
29
- when 'meters' then distance_in_kilometers_s
30
- when 'feet' then distance_in_miles_s
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Strava
4
- module Models
5
- class SegmentStats < Strava::Models::Response
6
- include Mixins::Time
7
-
8
- property 'pr_elapsed_time'
9
- property 'pr_date', transform_with: ->(v) { Date.parse(v) }
10
- property 'effort_count'
11
-
12
- def elapsed_time
13
- pr_elapsed_time
14
- end
15
- end
16
- end
17
- end