strava 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.travis.yml +6 -0
- data/.yardopts +1 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +302 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/strava.rb +79 -0
- data/lib/strava/activity.rb +224 -0
- data/lib/strava/adapters/httparty_adapter.rb +9 -0
- data/lib/strava/athlete.rb +378 -0
- data/lib/strava/base.rb +86 -0
- data/lib/strava/client.rb +65 -0
- data/lib/strava/club.rb +164 -0
- data/lib/strava/club_announcement.rb +28 -0
- data/lib/strava/comment.rb +36 -0
- data/lib/strava/error.rb +15 -0
- data/lib/strava/gear.rb +41 -0
- data/lib/strava/group_event.rb +62 -0
- data/lib/strava/lap.rb +39 -0
- data/lib/strava/leaderboard.rb +57 -0
- data/lib/strava/leaderboard_entry.rb +48 -0
- data/lib/strava/photo.rb +50 -0
- data/lib/strava/route.rb +51 -0
- data/lib/strava/running_race.rb +50 -0
- data/lib/strava/segment.rb +100 -0
- data/lib/strava/segment_effort.rb +45 -0
- data/lib/strava/stream.rb +33 -0
- data/lib/strava/stream_set.rb +62 -0
- data/lib/strava/usage.rb +38 -0
- data/lib/strava/version.rb +4 -0
- data/strava.gemspec +29 -0
- metadata +135 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
module Strava
|
2
|
+
class Stream
|
3
|
+
# Class to represent Strava Stream
|
4
|
+
# https://strava.github.io/api/v3/activities/
|
5
|
+
|
6
|
+
attr_reader :type, :data
|
7
|
+
|
8
|
+
def initialize(data)
|
9
|
+
# @response = data
|
10
|
+
@id = data["id"]
|
11
|
+
|
12
|
+
@type = data["type"] # => "latlng",
|
13
|
+
@data = data["data"] # => [...],
|
14
|
+
@series_type = data["series_type"] # => "distance",
|
15
|
+
@original_size = data["original_size"] # => 512,
|
16
|
+
@resolution = data["resolution"] # => "low"
|
17
|
+
|
18
|
+
self
|
19
|
+
end
|
20
|
+
|
21
|
+
def size
|
22
|
+
@data.size
|
23
|
+
end
|
24
|
+
def [](i)
|
25
|
+
@data[i]
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
__END__
|
32
|
+
|
33
|
+
ca = Strava::Athlete.current_athlete;
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Strava
|
2
|
+
class StreamSet
|
3
|
+
# Class to contain Strava Streams
|
4
|
+
# http://strava.github.io/api/v3/streams/
|
5
|
+
|
6
|
+
attr_reader :type, :data
|
7
|
+
def initialize(data = {})
|
8
|
+
@streams = {}
|
9
|
+
update(data)
|
10
|
+
end
|
11
|
+
|
12
|
+
def all
|
13
|
+
size = @streams.values.first.size
|
14
|
+
size.times.map do |i|
|
15
|
+
@streams.map do |type, stream|
|
16
|
+
[type, stream[i]]
|
17
|
+
end.to_h
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def all2
|
22
|
+
size = @streams.values.first.size
|
23
|
+
size.times.map do |i|
|
24
|
+
@streams.map do |type, stream|
|
25
|
+
{ type => stream[i] }
|
26
|
+
end.inject(:merge)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def empty?
|
31
|
+
@streams.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
def update(data, **opts)
|
35
|
+
@response = data
|
36
|
+
|
37
|
+
data.each do |stream_data|
|
38
|
+
stream = Stream.new(stream_data)
|
39
|
+
@streams[stream.type] = stream
|
40
|
+
end
|
41
|
+
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
def time; @streams['time']; end
|
46
|
+
def latlng; @streams['latlng']; end
|
47
|
+
def distance; @streams['distance']; end
|
48
|
+
def altitude; @streams['altitude']; end
|
49
|
+
def velocity_smooth; @streams['velocity_smooth']; end
|
50
|
+
def heartrate; @streams['heartrate']; end
|
51
|
+
def cadence; @streams['cadence']; end
|
52
|
+
def watts; @streams['watts']; end
|
53
|
+
def temp; @streams['temp']; end
|
54
|
+
def moving; @streams['moving']; end
|
55
|
+
def grade_smooth; @streams['grade_smooth']; end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
__END__
|
61
|
+
|
62
|
+
ca = Strava::Athlete.current_athlete;
|
data/lib/strava/usage.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
module Strava
|
2
|
+
# Provides data on Strava API limits and usage.
|
3
|
+
#
|
4
|
+
# Usage:
|
5
|
+
#
|
6
|
+
# ca = Strava::Athlete.current_athlete
|
7
|
+
# usage = ca.client.usage
|
8
|
+
# usage.recent_usage # => 254
|
9
|
+
# usage.daily_usage # => 12536
|
10
|
+
# usage.recent_pct # => 0.423
|
11
|
+
# usage.daily_pct # => 0.417
|
12
|
+
#
|
13
|
+
# @see https://strava.github.io/api/#rate-limiting Strava Docs - Rate Limiting
|
14
|
+
class Usage
|
15
|
+
attr_reader :recent_limit, :daily_limit, :recent_usage, :daily_usage
|
16
|
+
|
17
|
+
def initialize(limit_str, usage_str)
|
18
|
+
@recent_limit, @daily_limit = limit_str.to_s.split(',').map(&:to_i)
|
19
|
+
@recent_usage, @daily_usage = usage_str.to_s.split(',').map(&:to_i)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Percentage of recent limit used.
|
23
|
+
#
|
24
|
+
# @return [Float] Between 0.0 and 1.0
|
25
|
+
def recent_pct
|
26
|
+
@recent_usage.fdiv(@recent_limit)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Percentage of daily limit used.
|
30
|
+
#
|
31
|
+
# @return [Float] Between 0.0 and 1.0
|
32
|
+
def daily_pct
|
33
|
+
@daily_usage.fdiv(@daily_limit)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
data/strava.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'strava/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "strava"
|
8
|
+
spec.version = Strava::VERSION
|
9
|
+
spec.authors = ["Paul Hoffer"]
|
10
|
+
spec.email = ["git@paulhoffer.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Friendly client for Strava's V3 API.}
|
13
|
+
spec.description = %q{Client for Strava's V3 API, with a friendly object oriented approach to Strava resources.}
|
14
|
+
spec.homepage = "https://github.com/phoffer/strava"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
27
|
+
|
28
|
+
spec.add_dependency "httparty", ">= 0.14.0"
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: strava
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Paul Hoffer
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-07-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.14'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: httparty
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.14.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.14.0
|
69
|
+
description: Client for Strava's V3 API, with a friendly object oriented approach
|
70
|
+
to Strava resources.
|
71
|
+
email:
|
72
|
+
- git@paulhoffer.com
|
73
|
+
executables: []
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".gitignore"
|
78
|
+
- ".travis.yml"
|
79
|
+
- ".yardopts"
|
80
|
+
- Gemfile
|
81
|
+
- LICENSE.txt
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- bin/console
|
85
|
+
- bin/setup
|
86
|
+
- lib/strava.rb
|
87
|
+
- lib/strava/activity.rb
|
88
|
+
- lib/strava/adapters/httparty_adapter.rb
|
89
|
+
- lib/strava/athlete.rb
|
90
|
+
- lib/strava/base.rb
|
91
|
+
- lib/strava/client.rb
|
92
|
+
- lib/strava/club.rb
|
93
|
+
- lib/strava/club_announcement.rb
|
94
|
+
- lib/strava/comment.rb
|
95
|
+
- lib/strava/error.rb
|
96
|
+
- lib/strava/gear.rb
|
97
|
+
- lib/strava/group_event.rb
|
98
|
+
- lib/strava/lap.rb
|
99
|
+
- lib/strava/leaderboard.rb
|
100
|
+
- lib/strava/leaderboard_entry.rb
|
101
|
+
- lib/strava/photo.rb
|
102
|
+
- lib/strava/route.rb
|
103
|
+
- lib/strava/running_race.rb
|
104
|
+
- lib/strava/segment.rb
|
105
|
+
- lib/strava/segment_effort.rb
|
106
|
+
- lib/strava/stream.rb
|
107
|
+
- lib/strava/stream_set.rb
|
108
|
+
- lib/strava/usage.rb
|
109
|
+
- lib/strava/version.rb
|
110
|
+
- strava.gemspec
|
111
|
+
homepage: https://github.com/phoffer/strava
|
112
|
+
licenses:
|
113
|
+
- MIT
|
114
|
+
metadata: {}
|
115
|
+
post_install_message:
|
116
|
+
rdoc_options: []
|
117
|
+
require_paths:
|
118
|
+
- lib
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
requirements: []
|
130
|
+
rubyforge_project:
|
131
|
+
rubygems_version: 2.6.11
|
132
|
+
signing_key:
|
133
|
+
specification_version: 4
|
134
|
+
summary: Friendly client for Strava's V3 API.
|
135
|
+
test_files: []
|