strava-ruby-client 0.2.0 → 0.3.0

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +710 -88
  4. data/bin/strava-webhooks.rb +56 -0
  5. data/lib/strava-ruby-client.rb +37 -0
  6. data/lib/strava/api/client.rb +11 -141
  7. data/lib/strava/api/endpoints/activities.rb +120 -0
  8. data/lib/strava/api/endpoints/athletes.rb +42 -0
  9. data/lib/strava/api/endpoints/clubs.rb +75 -0
  10. data/lib/strava/api/endpoints/gears.rb +18 -0
  11. data/lib/strava/api/endpoints/routes.rb +55 -0
  12. data/lib/strava/api/endpoints/running_races.rb +30 -0
  13. data/lib/strava/api/endpoints/segment_efforts.rb +33 -0
  14. data/lib/strava/api/endpoints/segments.rb +111 -0
  15. data/lib/strava/api/endpoints/streams.rb +61 -0
  16. data/lib/strava/api/endpoints/uploads.rb +40 -0
  17. data/lib/strava/logger.rb +1 -1
  18. data/lib/strava/models/achievement.rb +9 -0
  19. data/lib/strava/models/activity.rb +11 -5
  20. data/lib/strava/models/activity_stats.rb +17 -0
  21. data/lib/strava/models/activity_total.rb +17 -0
  22. data/lib/strava/models/athlete.rb +10 -0
  23. data/lib/strava/models/club.rb +6 -0
  24. data/lib/strava/models/club_admin.rb +13 -0
  25. data/lib/strava/models/club_member.rb +16 -0
  26. data/lib/strava/models/explorer_segment.rb +19 -0
  27. data/lib/strava/models/gear.rb +5 -0
  28. data/lib/strava/models/heart_rate_zone_ranges.rb +8 -0
  29. data/lib/strava/models/kudoser.rb +10 -0
  30. data/lib/strava/models/lap.rb +3 -0
  31. data/lib/strava/models/mixins/distance.rb +18 -0
  32. data/lib/strava/models/power_zone_ranges.rb +7 -0
  33. data/lib/strava/models/route.rb +27 -0
  34. data/lib/strava/models/running_race.rb +33 -0
  35. data/lib/strava/models/segment.rb +15 -3
  36. data/lib/strava/models/segment_effort.rb +7 -2
  37. data/lib/strava/models/segment_leaderboard.rb +10 -0
  38. data/lib/strava/models/segment_leaderboard_entry.rb +12 -0
  39. data/lib/strava/models/segment_stats.rb +15 -0
  40. data/lib/strava/models/stream.rb +10 -0
  41. data/lib/strava/models/stream_set.rb +17 -0
  42. data/lib/strava/models/upload.rb +11 -0
  43. data/lib/strava/models/zone_range.rb +8 -0
  44. data/lib/strava/models/zones.rb +8 -0
  45. data/lib/strava/version.rb +1 -1
  46. data/lib/strava/web/client.rb +11 -1
  47. data/lib/strava/web/connection.rb +1 -1
  48. data/lib/strava/webhooks/client.rb +58 -0
  49. data/lib/strava/webhooks/config.rb +33 -0
  50. data/lib/strava/webhooks/models/challenge.rb +15 -0
  51. data/lib/strava/webhooks/models/event.rb +15 -0
  52. data/lib/strava/webhooks/models/subscription.rb +14 -0
  53. metadata +37 -2
@@ -0,0 +1,33 @@
1
+ module Strava
2
+ module Webhooks
3
+ module Config
4
+ extend self
5
+
6
+ ATTRIBUTES = %i[
7
+ endpoint
8
+ client_id
9
+ client_secret
10
+ ].freeze
11
+
12
+ attr_accessor(*Config::ATTRIBUTES)
13
+
14
+ def reset
15
+ self.endpoint = 'https://api.strava.com/api/v3'
16
+ self.client_id = nil
17
+ self.client_secret = nil
18
+ end
19
+ end
20
+
21
+ class << self
22
+ def configure
23
+ block_given? ? yield(Config) : Config
24
+ end
25
+
26
+ def config
27
+ Config
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ Strava::Webhooks::Config.reset
@@ -0,0 +1,15 @@
1
+ module Strava
2
+ module Webhooks
3
+ module Models
4
+ class Challenge < Hashie::Trash
5
+ property 'mode', from: 'hub.mode'
6
+ property 'verify_token', from: 'hub.verify_token'
7
+ property 'challenge', from: 'hub.challenge'
8
+
9
+ def response
10
+ { 'hub.challenge' => challenge }
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Strava
2
+ module Webhooks
3
+ module Models
4
+ class Event < Hashie::Trash
5
+ property 'object_type'
6
+ property 'object_id'
7
+ property 'aspect_type'
8
+ property 'updates'
9
+ property 'owner_id'
10
+ property 'subscription_id'
11
+ property 'event_time', transform_with: ->(v) { Time.at(v) }
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module Strava
2
+ module Webhooks
3
+ module Models
4
+ class Subscription < Hashie::Trash
5
+ property 'id'
6
+ property 'application_id'
7
+ property 'callback_url'
8
+ property 'resource_state'
9
+ property 'created_at', transform_with: ->(v) { Time.parse(v) }
10
+ property 'updated_at', transform_with: ->(v) { Time.parse(v) }
11
+ end
12
+ end
13
+ end
14
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strava-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-27 00:00:00.000000000 Z
11
+ date: 2018-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -76,18 +76,37 @@ files:
76
76
  - LICENSE.md
77
77
  - README.md
78
78
  - bin/strava-oauth-token.rb
79
+ - bin/strava-webhooks.rb
79
80
  - lib/strava-ruby-client.rb
80
81
  - lib/strava/api/client.rb
81
82
  - lib/strava/api/config.rb
82
83
  - lib/strava/api/cursor.rb
84
+ - lib/strava/api/endpoints/activities.rb
85
+ - lib/strava/api/endpoints/athletes.rb
86
+ - lib/strava/api/endpoints/clubs.rb
87
+ - lib/strava/api/endpoints/gears.rb
88
+ - lib/strava/api/endpoints/routes.rb
89
+ - lib/strava/api/endpoints/running_races.rb
90
+ - lib/strava/api/endpoints/segment_efforts.rb
91
+ - lib/strava/api/endpoints/segments.rb
92
+ - lib/strava/api/endpoints/streams.rb
93
+ - lib/strava/api/endpoints/uploads.rb
83
94
  - lib/strava/errors/fault.rb
84
95
  - lib/strava/logger.rb
96
+ - lib/strava/models/achievement.rb
85
97
  - lib/strava/models/activity.rb
98
+ - lib/strava/models/activity_stats.rb
99
+ - lib/strava/models/activity_total.rb
86
100
  - lib/strava/models/activity_zone.rb
87
101
  - lib/strava/models/athlete.rb
88
102
  - lib/strava/models/club.rb
103
+ - lib/strava/models/club_admin.rb
104
+ - lib/strava/models/club_member.rb
89
105
  - lib/strava/models/comment.rb
106
+ - lib/strava/models/explorer_segment.rb
90
107
  - lib/strava/models/gear.rb
108
+ - lib/strava/models/heart_rate_zone_ranges.rb
109
+ - lib/strava/models/kudoser.rb
91
110
  - lib/strava/models/lap.rb
92
111
  - lib/strava/models/map.rb
93
112
  - lib/strava/models/mixins/distance.rb
@@ -96,13 +115,24 @@ files:
96
115
  - lib/strava/models/model.rb
97
116
  - lib/strava/models/photo.rb
98
117
  - lib/strava/models/photos.rb
118
+ - lib/strava/models/power_zone_ranges.rb
119
+ - lib/strava/models/route.rb
120
+ - lib/strava/models/running_race.rb
99
121
  - lib/strava/models/segment.rb
100
122
  - lib/strava/models/segment_effort.rb
123
+ - lib/strava/models/segment_leaderboard.rb
124
+ - lib/strava/models/segment_leaderboard_entry.rb
125
+ - lib/strava/models/segment_stats.rb
101
126
  - lib/strava/models/similar_activities.rb
102
127
  - lib/strava/models/split.rb
128
+ - lib/strava/models/stream.rb
129
+ - lib/strava/models/stream_set.rb
103
130
  - lib/strava/models/timed_zone_range.rb
104
131
  - lib/strava/models/token.rb
105
132
  - lib/strava/models/trend.rb
133
+ - lib/strava/models/upload.rb
134
+ - lib/strava/models/zone_range.rb
135
+ - lib/strava/models/zones.rb
106
136
  - lib/strava/oauth/client.rb
107
137
  - lib/strava/oauth/config.rb
108
138
  - lib/strava/version.rb
@@ -111,6 +141,11 @@ files:
111
141
  - lib/strava/web/connection.rb
112
142
  - lib/strava/web/raise_error.rb
113
143
  - lib/strava/web/request.rb
144
+ - lib/strava/webhooks/client.rb
145
+ - lib/strava/webhooks/config.rb
146
+ - lib/strava/webhooks/models/challenge.rb
147
+ - lib/strava/webhooks/models/event.rb
148
+ - lib/strava/webhooks/models/subscription.rb
114
149
  homepage: http://github.com/dblock/strava-ruby-client
115
150
  licenses:
116
151
  - MIT