strava-api 0.13.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.
- data/LICENSE +20 -0
- data/README.rdoc +221 -0
- data/Rakefile +56 -0
- data/lib/strava-api.rb +22 -0
- data/lib/strava-api/base.rb +37 -0
- data/lib/strava-api/bike.rb +8 -0
- data/lib/strava-api/club.rb +17 -0
- data/lib/strava-api/clubs.rb +28 -0
- data/lib/strava-api/effort.rb +50 -0
- data/lib/strava-api/efforts.rb +9 -0
- data/lib/strava-api/exceptions.rb +9 -0
- data/lib/strava-api/hash_based_store.rb +52 -0
- data/lib/strava-api/member.rb +8 -0
- data/lib/strava-api/ride.rb +55 -0
- data/lib/strava-api/rides.rb +39 -0
- data/lib/strava-api/segment.rb +36 -0
- data/lib/strava-api/segments.rb +39 -0
- data/test/helper.rb +133 -0
- data/test/test_base.rb +40 -0
- data/test/test_club.rb +45 -0
- data/test/test_clubs.rb +87 -0
- data/test/test_effort.rb +31 -0
- data/test/test_hash_based_store.rb +79 -0
- data/test/test_ride.rb +49 -0
- data/test/test_rides.rb +186 -0
- data/test/test_segment.rb +63 -0
- data/test/test_segments.rb +166 -0
- data/test/test_strava.rb +36 -0
- metadata +136 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
module StravaApi
|
2
|
+
class HashBasedStore
|
3
|
+
def initialize(connection, attribute_map, nested_class_map, options)
|
4
|
+
@connection = connection
|
5
|
+
@valid_attributes = attribute_map
|
6
|
+
@nested_class_map = nested_class_map
|
7
|
+
|
8
|
+
@values = {}
|
9
|
+
@valid_attributes.each do |json_key, ruby_key|
|
10
|
+
value = options[json_key]
|
11
|
+
@values[ruby_key] = value.is_a?(Hash) ? @nested_class_map[ruby_key].new(@connection, value) : value
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def [](key)
|
16
|
+
@values[key]
|
17
|
+
end
|
18
|
+
|
19
|
+
#This needs to be explicit because otherwise you get the Object#id method (which is depreciated) rather than
|
20
|
+
#method missing getting called
|
21
|
+
def id
|
22
|
+
@values[:id]
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s
|
26
|
+
result = []
|
27
|
+
@values.each do |key, value|
|
28
|
+
result << ":#{key} => #{value}" if value
|
29
|
+
end
|
30
|
+
|
31
|
+
"#<#{self.class} [#{result.join(', ')}]>"
|
32
|
+
end
|
33
|
+
|
34
|
+
#cleanup how StravaApi objects are displayed in irb
|
35
|
+
alias_method :original_inspect, :inspect
|
36
|
+
alias_method :inspect, :to_s
|
37
|
+
|
38
|
+
def merge(other)
|
39
|
+
@valid_attributes.each do |json_key, ruby_key|
|
40
|
+
@values[ruby_key] = other[ruby_key] if other[ruby_key]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def method_missing(symbol, *args)
|
45
|
+
if @valid_attributes.values.include?(symbol)
|
46
|
+
@values[symbol]
|
47
|
+
else
|
48
|
+
raise InternalError
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module StravaApi
|
2
|
+
# {"ride":{
|
3
|
+
# "timeZoneOffset":-8.0,
|
4
|
+
# "elevationGain":1441.02,
|
5
|
+
# "location":"San Francisco, CA",
|
6
|
+
# "elapsedTime":14579,
|
7
|
+
# "description":null,
|
8
|
+
# "name":"02/28/10 San Francisco, CA",
|
9
|
+
# "movingTime":12748,
|
10
|
+
# "averageSpeed":23260.8064010041,
|
11
|
+
# "athlete":{"username":"julianbill","name":"Julian Bill","id":1139},
|
12
|
+
# "distance":82369.1,
|
13
|
+
# "startDate":"2010-02-28T16:31:35Z",
|
14
|
+
# "averageWatts":175.112,
|
15
|
+
# "bike":{"name":"Serotta Legend Ti","id":903},
|
16
|
+
# "startDateLocal":"2010-02-28T08:31:35Z",
|
17
|
+
# "id":77563,
|
18
|
+
# "maximumSpeed":64251.72
|
19
|
+
# }}
|
20
|
+
class Ride < HashBasedStore
|
21
|
+
ATTRIBUTE_MAP = {
|
22
|
+
"timeZoneOffset" => :time_zone_offset,
|
23
|
+
"elevationGain" => :elevation_gain,
|
24
|
+
"location" => :location,
|
25
|
+
"elapsedTime" => :elapsed_time,
|
26
|
+
"description" => :description,
|
27
|
+
"name" => :name,
|
28
|
+
"movingTime" => :moving_time,
|
29
|
+
"averageSpeed" => :average_speed,
|
30
|
+
"distance" => :distance,
|
31
|
+
"startDate" => :start_date,
|
32
|
+
"averageWatts" => :average_watts,
|
33
|
+
"startDateLocal" => :start_date_local,
|
34
|
+
"id" => :id,
|
35
|
+
"maximumSpeed" => :maximum_speed,
|
36
|
+
"athlete" => :athlete,
|
37
|
+
"bike" => :bike
|
38
|
+
}
|
39
|
+
|
40
|
+
NESTED_CLASS_MAP = { :athlete => Member, :bike => Bike }
|
41
|
+
|
42
|
+
def initialize(connection, options = {})
|
43
|
+
super(connection, ATTRIBUTE_MAP, NESTED_CLASS_MAP, options)
|
44
|
+
end
|
45
|
+
|
46
|
+
def show
|
47
|
+
self.merge(@connection.ride_show(self.id))
|
48
|
+
self
|
49
|
+
end
|
50
|
+
|
51
|
+
def efforts
|
52
|
+
@connection.ride_efforts(self.id)
|
53
|
+
end
|
54
|
+
end #class Ride
|
55
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module StravaApi
|
2
|
+
module Rides
|
3
|
+
def rides(options = {})
|
4
|
+
options_map = {
|
5
|
+
:club_id => 'clubId',
|
6
|
+
:athlete_id => 'athleteId',
|
7
|
+
:athlete_name => 'athleteName',
|
8
|
+
:start_date => 'startDate',
|
9
|
+
:end_date => 'endDate',
|
10
|
+
:start_id => 'startId',
|
11
|
+
:offset => 'offset'
|
12
|
+
}
|
13
|
+
|
14
|
+
#convert between rails format names and camel case
|
15
|
+
filtered_options = {}
|
16
|
+
options_map.each_pair do |key, converted|
|
17
|
+
filtered_options[converted] = options[key] if options[key]
|
18
|
+
end
|
19
|
+
|
20
|
+
raise StravaApi::CommandError if filtered_options.empty?
|
21
|
+
|
22
|
+
result = call("rides", "rides", filtered_options)
|
23
|
+
result["rides"].collect {|item| Ride.new(self, item)}
|
24
|
+
end
|
25
|
+
|
26
|
+
def ride_show(id)
|
27
|
+
result = call("rides/#{id}", "ride", {})
|
28
|
+
|
29
|
+
Ride.new(self, result["ride"])
|
30
|
+
end
|
31
|
+
|
32
|
+
#returns all efforts, don't need an offset
|
33
|
+
def ride_efforts(id)
|
34
|
+
result = call("rides/#{id}/efforts", "efforts", {})
|
35
|
+
|
36
|
+
result["efforts"].collect {|effort| Effort.new(self, effort)}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module StravaApi
|
2
|
+
# {
|
3
|
+
# "name":"Panoramic to Pan Toll",
|
4
|
+
# "id":156,
|
5
|
+
# "climbCategory":"4",
|
6
|
+
# "elevationGain":151.728,
|
7
|
+
# "elevationHigh":458.206,
|
8
|
+
# "elevationLow":304.395,
|
9
|
+
# "distance":2378.34,
|
10
|
+
# "averageGrade":6.50757
|
11
|
+
# }
|
12
|
+
class Segment < HashBasedStore
|
13
|
+
ATTRIBUTE_MAP = {
|
14
|
+
'name' => :name,
|
15
|
+
'id' => :id,
|
16
|
+
"climbCategory" => :climb_category,
|
17
|
+
"elevationGain" => :elevation_gain,
|
18
|
+
"elevationHigh" => :elevation_high,
|
19
|
+
"elevationLow" => :elevation_low,
|
20
|
+
"distance" => :distance,
|
21
|
+
"averageGrade" => :average_grade
|
22
|
+
}
|
23
|
+
def initialize(connection, options = {})
|
24
|
+
super(connection, ATTRIBUTE_MAP, {}, options)
|
25
|
+
end
|
26
|
+
|
27
|
+
def show
|
28
|
+
self.merge(@connection.segment_show(self.id))
|
29
|
+
self
|
30
|
+
end
|
31
|
+
|
32
|
+
def efforts(options = {})
|
33
|
+
@connection.segment_efforts(self.id, options)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module StravaApi
|
2
|
+
module Segments
|
3
|
+
#returns all segments, don't need an offset
|
4
|
+
def segments(name)
|
5
|
+
result = call("segments", "segments", {:name => name})
|
6
|
+
|
7
|
+
result["segments"].collect {|item| Segment.new(self, item)}
|
8
|
+
end
|
9
|
+
|
10
|
+
def segment_show(id)
|
11
|
+
result = call("segments/#{id}", "segment", {})
|
12
|
+
|
13
|
+
Segment.new(self, result["segment"])
|
14
|
+
end
|
15
|
+
|
16
|
+
def segment_efforts(id, options = {})
|
17
|
+
options_map = {
|
18
|
+
:club_id => 'clubId',
|
19
|
+
:athlete_id => 'athleteId',
|
20
|
+
:athlete_name => 'athleteName',
|
21
|
+
:start_date => 'startDate',
|
22
|
+
:end_date => 'endDate',
|
23
|
+
:start_id => 'startId',
|
24
|
+
:best => 'best',
|
25
|
+
:offset => 'offset'
|
26
|
+
}
|
27
|
+
|
28
|
+
#convert between rails format names and camel case
|
29
|
+
filtered_options = {}
|
30
|
+
options_map.each_pair do |key, converted|
|
31
|
+
filtered_options[converted] = options[key] if options[key]
|
32
|
+
end
|
33
|
+
|
34
|
+
result = call("segments/#{id}/efforts", "efforts", filtered_options)
|
35
|
+
|
36
|
+
result["efforts"].collect {|effort| Effort.new(self, effort)}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
+
require 'strava-api'
|
7
|
+
|
8
|
+
class Test::Unit::TestCase
|
9
|
+
def expect_error(error, &block)
|
10
|
+
begin
|
11
|
+
block.call
|
12
|
+
rescue error
|
13
|
+
assert true
|
14
|
+
else
|
15
|
+
assert false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def clubs_index_json
|
20
|
+
#curl http://www.strava.com/api/v1/clubs?name=X
|
21
|
+
'{"clubs":[{"name":"SLO Nexus","id":23},{"name":"Ex Has Beens That Never Were","id":31},{"name":"Team FeXY","id":150},{"name":"Paris Fixed Gear","id":247}]}'
|
22
|
+
end
|
23
|
+
|
24
|
+
def club_show_json
|
25
|
+
#curl http://www.strava.com/api/v1/clubs/23
|
26
|
+
'{"club":{"location":"San Luis Obispo, CA","description":"SLO Nexus brings together people who love to ride bikes, race bikes, and promote bike riding in our community. Our fresh outlook on the local bike scene incorporates support, fun, education, and fitness and is designed to bring together the growing number","name":"SLO Nexus","id":23}}'
|
27
|
+
end
|
28
|
+
|
29
|
+
def club_members_json
|
30
|
+
#curl http://www.strava.com/api/v1/clubs/23/members
|
31
|
+
'{"club":{"name":"SLO Nexus","id":23},"members":[{"name":"Dan Speirs","id":569},{"name":"Steve Sharp","id":779},{"name":"Jesse Englert","id":5747},{"name":"Garrett Otto","id":6006},{"name":"Ken Kienow","id":4944},{"name":"Brad Buxton","id":5984}]}'
|
32
|
+
end
|
33
|
+
|
34
|
+
def rides_index_by_club_json
|
35
|
+
#curl http://www.strava.com/api/v1/rides?clubId=23
|
36
|
+
'{"rides":[{"name":"from SVRMC","id":191846},{"name":"Highland Hill Repeats x 4","id":191847},{"name":"from SVRMC","id":190933},{"name":"Lunch TT Ride","id":190934},{"name":"to French & Back Warm-up","id":190935},{"name":"Parkfield Classic XC","id":192353},{"name":"to SVRMC","id":190932},{"name":"Perfumo","id":190406},{"name":"from SVRMC + Flat","id":190402},{"name":"to SVRMC","id":190401},{"name":"Cerro San Luis Lap","id":192352},{"name":"Perfumo Repeats x2 - 09/23/2010 San Luis Obispo, CA","id":189813},{"name":"Pick up Sydney from School","id":191780},{"name":"Black Hill/MDO/Perfumo","id":189654},{"name":"Perfumo","id":189578},{"name":"from SVRMC","id":189204},{"name":"to SVRMC","id":189203},{"name":"Tiffany Loop and Johnson Ranch","id":189544},{"name":"from SVRMC","id":188865},{"name":"Noon Hammer Ride","id":188866},{"name":"09/21/2010 San Luis Obispo, CA","id":188671},{"name":"Noon hammer ride","id":188591},{"name":"to SVRMC","id":188864},{"name":"from SVRMC","id":188091},{"name":"Up 227 then rode with Todd to AG 09/20/10 San Luis Obispo, CA","id":187942},{"name":"See","id":187875},{"name":"to SVRMC","id":188092},{"name":"Perfumo Punishment","id":187072},{"name":"Road ride with Colin - 09/19/10 Arroyo Grande, CA","id":187052},{"name":"Mtn Bike with Colin & Duncan - Johnson Loop - 09/19/10 San Luis Obispo, CA","id":187051},{"name":"Tiffany Loop","id":186702},{"name":"MDO with Dad","id":185910},{"name":"Upper Lopez Canyon","id":185894},{"name":"See loop","id":184713},{"name":"from SVRMC","id":184615},{"name":"to SVRMC","id":184616},{"name":"Perfumo Recovery","id":183855},{"name":"to SVRMC","id":183854},{"name":"Turri Loop","id":186704},{"name":"from SVRMC","id":183234},{"name":"Hammer Ride - 09/14/10 San Luis Obispo, CA","id":183230},{"name":"Noon Hammer Ride","id":183233},{"name":"Noon hammer ride","id":183000},{"name":"to SVRMC","id":183235},{"name":"Irish Hills","id":186705},{"name":"from SVRMC","id":182825},{"name":"Lopez then up 227 - 09/13/10 San Luis Obispo, CA","id":182763},{"name":"to SVRMC","id":182824},{"name":"recovery","id":182462},{"name":"Tiffany Loop","id":186703}]}'
|
37
|
+
end
|
38
|
+
|
39
|
+
def rides_index_by_athlete_json
|
40
|
+
#curl http://www.strava.com/api/v1/rides?athleteId=779
|
41
|
+
'{"rides":[{"name":"from SVRMC","id":191846},{"name":"Highland Hill Repeats x 4","id":191847},{"name":"from SVRMC","id":190933},{"name":"Lunch TT Ride","id":190934},{"name":"to French & Back Warm-up","id":190935},{"name":"to SVRMC","id":190932},{"name":"from SVRMC + Flat","id":190402},{"name":"to SVRMC","id":190401},{"name":"Pick up Sydney from School","id":191780},{"name":"Black Hill/MDO/Perfumo","id":189654},{"name":"from SVRMC","id":189204},{"name":"to SVRMC","id":189203},{"name":"from SVRMC","id":188865},{"name":"Noon Hammer Ride","id":188866},{"name":"to SVRMC","id":188864},{"name":"from SVRMC","id":188091},{"name":"to SVRMC","id":188092},{"name":"Perfumo Punishment","id":187072},{"name":"Upper Lopez Canyon","id":185894},{"name":"from SVRMC","id":184615},{"name":"to SVRMC","id":184616},{"name":"Perfumo Recovery","id":183855},{"name":"to SVRMC","id":183854},{"name":"from SVRMC","id":183234},{"name":"Noon Hammer Ride","id":183233},{"name":"to SVRMC","id":183235},{"name":"from SVRMC","id":182825},{"name":"to SVRMC","id":182824},{"name":"Fire Lookout/Hwy 267 climb","id":182280},{"name":"ride to beach with Jill","id":181240},{"name":"Mt. Rose/Fire Lookout","id":182281},{"name":"Tahoe City-Truckee-Kings Beach","id":180876},{"name":"spin with Jill","id":180605},{"name":"from SVRMC","id":179483},{"name":"to SVRMC","id":179482},{"name":"from SVRMC","id":178806},{"name":"Noon Hammer Ride","id":178808},{"name":"to SVRMC","id":178807},{"name":"from SVRMC","id":177056},{"name":"Lunch Ride Highland Hill X 4","id":177057},{"name":"to SVRMC","id":177058},{"name":"from SVRMC","id":176133},{"name":"Lunch TT Ride","id":176134},{"name":"to SVRMC","id":176132},{"name":"from SVRMC","id":175349},{"name":"Lunch TT Ride","id":175350},{"name":"to SVRMC","id":175351},{"name":"spin home ","id":174393},{"name":"Highland Hill Repeats X 7","id":173830},{"name":"to SVRMC","id":173829}]}'
|
42
|
+
end
|
43
|
+
|
44
|
+
def rides_index_by_club_and_athlete_json
|
45
|
+
#curl "http://www.strava.com/api/v1/rides?clubId=23&athleteId=779"
|
46
|
+
'{"rides":[{"name":"from SVRMC","id":191846},{"name":"Highland Hill Repeats x 4","id":191847},{"name":"from SVRMC","id":190933},{"name":"Lunch TT Ride","id":190934},{"name":"to French & Back Warm-up","id":190935},{"name":"to SVRMC","id":190932},{"name":"from SVRMC + Flat","id":190402},{"name":"to SVRMC","id":190401},{"name":"Pick up Sydney from School","id":191780},{"name":"Black Hill/MDO/Perfumo","id":189654},{"name":"from SVRMC","id":189204},{"name":"to SVRMC","id":189203},{"name":"from SVRMC","id":188865},{"name":"Noon Hammer Ride","id":188866},{"name":"to SVRMC","id":188864},{"name":"from SVRMC","id":188091},{"name":"to SVRMC","id":188092},{"name":"Perfumo Punishment","id":187072},{"name":"Upper Lopez Canyon","id":185894},{"name":"from SVRMC","id":184615},{"name":"to SVRMC","id":184616},{"name":"Perfumo Recovery","id":183855},{"name":"to SVRMC","id":183854},{"name":"from SVRMC","id":183234},{"name":"Noon Hammer Ride","id":183233},{"name":"to SVRMC","id":183235},{"name":"from SVRMC","id":182825},{"name":"to SVRMC","id":182824},{"name":"Fire Lookout/Hwy 267 climb","id":182280},{"name":"ride to beach with Jill","id":181240},{"name":"Mt. Rose/Fire Lookout","id":182281},{"name":"Tahoe City-Truckee-Kings Beach","id":180876},{"name":"spin with Jill","id":180605},{"name":"from SVRMC","id":179483},{"name":"to SVRMC","id":179482},{"name":"from SVRMC","id":178806},{"name":"Noon Hammer Ride","id":178808},{"name":"to SVRMC","id":178807},{"name":"from SVRMC","id":177056},{"name":"Lunch Ride Highland Hill X 4","id":177057},{"name":"to SVRMC","id":177058},{"name":"from SVRMC","id":176133},{"name":"Lunch TT Ride","id":176134},{"name":"to SVRMC","id":176132},{"name":"from SVRMC","id":175349},{"name":"Lunch TT Ride","id":175350},{"name":"to SVRMC","id":175351},{"name":"spin home ","id":174393},{"name":"Highland Hill Repeats X 7","id":173830},{"name":"to SVRMC","id":173829}]}'
|
47
|
+
end
|
48
|
+
|
49
|
+
def rides_index_ignores_invalid_parameter_json
|
50
|
+
#curl http://www.strava.com/api/v1/rides?athleteId=779
|
51
|
+
'{"rides":[{"name":"from SVRMC","id":191846},{"name":"Highland Hill Repeats x 4","id":191847},{"name":"from SVRMC","id":190933},{"name":"Lunch TT Ride","id":190934},{"name":"to French & Back Warm-up","id":190935},{"name":"to SVRMC","id":190932},{"name":"from SVRMC + Flat","id":190402},{"name":"to SVRMC","id":190401},{"name":"Pick up Sydney from School","id":191780},{"name":"Black Hill/MDO/Perfumo","id":189654},{"name":"from SVRMC","id":189204},{"name":"to SVRMC","id":189203},{"name":"from SVRMC","id":188865},{"name":"Noon Hammer Ride","id":188866},{"name":"to SVRMC","id":188864},{"name":"from SVRMC","id":188091},{"name":"to SVRMC","id":188092},{"name":"Perfumo Punishment","id":187072},{"name":"Upper Lopez Canyon","id":185894},{"name":"from SVRMC","id":184615},{"name":"to SVRMC","id":184616},{"name":"Perfumo Recovery","id":183855},{"name":"to SVRMC","id":183854},{"name":"from SVRMC","id":183234},{"name":"Noon Hammer Ride","id":183233},{"name":"to SVRMC","id":183235},{"name":"from SVRMC","id":182825},{"name":"to SVRMC","id":182824},{"name":"Fire Lookout/Hwy 267 climb","id":182280},{"name":"ride to beach with Jill","id":181240},{"name":"Mt. Rose/Fire Lookout","id":182281},{"name":"Tahoe City-Truckee-Kings Beach","id":180876},{"name":"spin with Jill","id":180605},{"name":"from SVRMC","id":179483},{"name":"to SVRMC","id":179482},{"name":"from SVRMC","id":178806},{"name":"Noon Hammer Ride","id":178808},{"name":"to SVRMC","id":178807},{"name":"from SVRMC","id":177056},{"name":"Lunch Ride Highland Hill X 4","id":177057},{"name":"to SVRMC","id":177058},{"name":"from SVRMC","id":176133},{"name":"Lunch TT Ride","id":176134},{"name":"to SVRMC","id":176132},{"name":"from SVRMC","id":175349},{"name":"Lunch TT Ride","id":175350},{"name":"to SVRMC","id":175351},{"name":"spin home ","id":174393},{"name":"Highland Hill Repeats X 7","id":173830},{"name":"to SVRMC","id":173829}]}'
|
52
|
+
end
|
53
|
+
|
54
|
+
def rides_after_start_date_json
|
55
|
+
#curl "http://www.strava.com/api/v1/rides?athleteId=779&startDate=2010-09-21"
|
56
|
+
'{"rides":[{"name":"from SVRMC","id":191846},{"name":"Highland Hill Repeats x 4","id":191847},{"name":"from SVRMC","id":190933},{"name":"Lunch TT Ride","id":190934},{"name":"to French & Back Warm-up","id":190935},{"name":"to SVRMC","id":190932},{"name":"from SVRMC + Flat","id":190402},{"name":"to SVRMC","id":190401},{"name":"Pick up Sydney from School","id":191780},{"name":"Black Hill/MDO/Perfumo","id":189654},{"name":"from SVRMC","id":189204},{"name":"to SVRMC","id":189203},{"name":"from SVRMC","id":188865},{"name":"Noon Hammer Ride","id":188866},{"name":"to SVRMC","id":188864}]}'
|
57
|
+
end
|
58
|
+
|
59
|
+
def rides_using_offset_json
|
60
|
+
#curl "http://www.strava.com/api/v1/rides?athleteId=779&startDate=2010-07-1&endDate=2010_09_01"
|
61
|
+
'{"rides":[{"name":"07/05/10 Chula Vista, CA","id":143214},{"name":"Los Gatos Apple Store","id":139046},{"name":"07/05/10 Kellyville Ridge, NSW, Australia","id":170913},{"name":"Day2 Right to Play, Bruge to Calais: Fast group riding surrounded by flat fields","id":132963},{"name":"07/05/10 Marysville, WA","id":139462},{"name":"07/05/10 Joondanna, WA, Australia","id":145125},{"name":"07/05/10 Kellyville Ridge, NSW, Australia","id":170916},{"name":"07/05/10 Salt Lake City, UT","id":133548},{"name":"07/05/10 San Jose, CA","id":139045},{"name":"07/05/10 Fremont, CA","id":132007},{"name":"Spruce to Euclid","id":136015},{"name":"Twin Peaks, both ways","id":131961},{"name":"07/05/10 BE","id":131948},{"name":"07/05/10 Phoenix, AZ","id":136736},{"name":"07/05/10 Portland, OR - Monday PIR July #1","id":155635},{"name":"16 mile Hendricks-Ridgeline loop","id":132128},{"name":"07/05/10 Vancouver, BC, Canada","id":133953},{"name":"07/05/10 Portland, OR","id":133045},{"name":"Strava is Farmville for Cyclists","id":132186},{"name":"07/05/10 Rosslea, Fermanagh, United Kingdom","id":131609},{"name":"Home to PVHS to Home","id":131958},{"name":"07/05/10 Ravensdale, WA","id":143560},{"name":"UP to Dupont","id":131978},{"name":"07/05/10 Norwich, VT","id":132082},{"name":"07/05/10 Austin, TX","id":174324},{"name":"from SVRMC","id":132010},{"name":"07/05/10 Norwich, VT","id":131938},{"name":"07/05/10 Infa to Lucan (partial)","id":131533},{"name":"07/05/10 North Sydney, NSW, Australia","id":136579},{"name":"07/05/10 Danville, CA","id":174936},{"name":"07/05/10 West Leederville, WA, Australia","id":136711},{"name":"07/05/10 Foothill Ranch, CA","id":132364},{"name":"07/05/10 San Jose, CA","id":131917},{"name":"07/05/10 Alpena, MI","id":132243},{"name":"07/05/10 Alpena, MI","id":164681},{"name":"07/05/10 San Diego, CA","id":131991},{"name":"07/05/10 Paradise Loop (short) & Gilmartin Drive","id":131906},{"name":"07/05/10 San Francisco, CA","id":131959},{"name":"07/05/10 Woodside, CA kings-skyline-page mill","id":132008},{"name":"07/05/10 San Diego, CA","id":132055},{"name":"07/05/10 Subiaco, WA, Australia","id":145126},{"name":"Recovery Ride","id":131951},{"name":"07/05/10 Borehamwood, Greater London","id":142057},{"name":"07/05/10 Crowmarsh, Oxfordshire, United Kingdom","id":131604},{"name":"07/05/10 Daglish, WA, Australia","id":162047},{"name":"2x voie maritime ","id":131904},{"name":"Coyote Hills Quickie (500)","id":131935},{"name":"Oakland Hills","id":135793},{"name":"Powercranks - Hill Road","id":131900},{"name":"07/05/10 San Jose, CA","id":136352}]}'
|
62
|
+
end
|
63
|
+
|
64
|
+
def rides_using_offset_50_json
|
65
|
+
#curl "http://www.strava.com/api/v1/rides?athleteId=779&startDate=2010-07-1&endDate=2010_09_01&offset=50"
|
66
|
+
'{"rides":[{"name":"07/05/10 Moraga, CA","id":178455},{"name":"07/05/10 Oakland, CA","id":138353},{"name":"07/05/10 Bay Farm Loop","id":146047},{"name":"07/05/10 Bath, Bath and North East Somerset, United Kingdom","id":132105},{"name":"07/05/10 Apeldoorn, Gelderland, The Netherlands","id":165396},{"name":"Paradise out n back","id":134426},{"name":"07/05/10 Apeldoorn, Gelderland, The Netherlands","id":165391},{"name":"Westridge/Portola/OLH/Woodside","id":131924},{"name":"07/05/10 Arlington, TX","id":133900},{"name":"Neighborhood Ride","id":133147},{"name":"731 to Pekin 73 Loop","id":131884},{"name":"07/05/10 Cheyenne, WY","id":132067},{"name":"07/05/10 Norwich, VT","id":131802},{"name":"MCX Washout","id":132220},{"name":"07/05/10 San Francisco, CA","id":132392},{"name":"07/05/10 Redwood City, CA","id":143306},{"name":"07/05/10 San Francisco, CA","id":132230},{"name":"07/05/10 Reverse Paradise, CA","id":131964},{"name":"07/05/10 Milledgeville, GA","id":131696},{"name":"07/05/10 Turlock, CA","id":132184},{"name":"Paradise","id":131949},{"name":"07/05/10 Polo Fields","id":131852},{"name":"07/05/10 Oakland, CA","id":152256},{"name":"Top Hat and Union Hill Exploration","id":150023},{"name":"07/05/10 Burlingame, CA","id":131888},{"name":"MCX Headlands- Flying Danno","id":132169},{"name":"07/05/10 Shady Spring, WV","id":132995},{"name":"07/05/10 Lake Oswego, OR","id":155989},{"name":"07/05/2010 Morgan Hill, CA","id":190222},{"name":"Trail ride to the emergency room","id":132131},{"name":"07/05/10 Quick loop (Hot day)","id":131658},{"name":"Ravensdale - Black Diamond","id":131992},{"name":"07/05/10 Fitchburg Criterium","id":135511},{"name":"07/05/10 San Francisco, CA","id":171941},{"name":"07/05/10 Truckee, CA","id":173709},{"name":"Foothill, Portola Loop","id":132345},{"name":"07/05/10 Fitchburg, MA crit (21)","id":131965},{"name":"07/05/10 Box Hill South, VIC, Australia","id":131433},{"name":"Fitchburg Crit","id":133775},{"name":"07/05/10 West Melbourne, FL","id":133043},{"name":"07/05/10 Norwich, VT","id":132670},{"name":"07/05/10 Redmond, WA","id":160497},{"name":"out and back to bike hub","id":132370},{"name":"Harbins","id":136301},{"name":"07/05/10 Fair Oaks, CA","id":131843},{"name":"SF-Fairfax-ChinaCamp","id":132006},{"name":"07/05/10 San Francisco, CA","id":178832},{"name":"07/05/10 Agoura Hills, CA","id":131988},{"name":"Nisene Ride","id":156100},{"name":"07/05/10 Richmond, CA","id":142917}]}'
|
67
|
+
end
|
68
|
+
|
69
|
+
def ride_show_json
|
70
|
+
#curl "http://www.strava.com/api/v1/rides/77563"
|
71
|
+
'{"ride":{"averageSpeed":23260.8064010041,"location":"San Francisco, CA","startDate":"2010-02-28T16:31:35Z","description":null,"averageWatts":175.112,"name":"02/28/10 San Francisco, CA","startDateLocal":"2010-02-28T08:31:35Z","maximumSpeed":64251.72,"timeZoneOffset":-8.0,"athlete":{"username":"julianbill","name":"Julian Bill","id":1139},"elevationGain":1441.02,"distance":82369.1,"elapsedTime":14579,"bike":{"name":"Serotta Legend Ti","id":903},"id":77563,"movingTime":12748}}'
|
72
|
+
end
|
73
|
+
|
74
|
+
def ride_efforts_json
|
75
|
+
#curl "http://www.strava.com/api/v1/rides/77563/efforts"
|
76
|
+
'{"ride":{"name":"02/28/10 San Francisco, CA","id":77563},"efforts":[{"elapsed_time":209,"segment":{"name":"Panhandle to GGP","id":623323},"id":2231990},{"elapsed_time":63,"segment":{"name":"Conservatory of Flowers Hill","id":626358},"id":2543643},{"elapsed_time":409,"segment":{"name":"GGB Northbound","id":616515},"id":1523485},{"elapsed_time":470,"segment":{"name":"Bridgeway Vigilance Northbound","id":623072},"id":2201113},{"elapsed_time":126,"segment":{"name":"Mike\'s Bikes Sprint","id":626575},"id":2605695},{"elapsed_time":317,"segment":{"name":"Miller Ave TT","id":613995},"id":1324431},{"elapsed_time":776,"segment":{"name":"Brad\'s Climb (formerly Jim\'s Climb) (MV to 4Cs)","id":361375},"id":688442},{"elapsed_time":1185,"segment":{"name":"Mill Valley to Panoramic via Marion Ave","id":718},"id":688443},{"elapsed_time":2148,"segment":{"name":"Mill Valley to Pantoll","id":622149},"id":2078609},{"elapsed_time":1268,"segment":{"name":"4 Corners to Bootjack","id":609323},"id":840745},{"elapsed_time":1498,"segment":{"name":"4 Corners to Pantoll Station","id":625065},"id":2419895},{"elapsed_time":598,"segment":{"name":"Panoramic to Pan Toll","id":156},"id":688432},{"elapsed_time":547,"segment":{"name":"Stinson Beach Descent","id":617195},"id":1594150},{"elapsed_time":471,"segment":{"name":"Stinson Climb 1, south ","id":157},"id":688433},{"elapsed_time":1582,"segment":{"name":"Stinson Beach to Muir Beach","id":615929},"id":1469576},{"elapsed_time":1237,"segment":{"name":"Steep Ravine to Pelican Inn","id":618085},"id":1670144},{"elapsed_time":369,"segment":{"name":"Highway 1 South from Cold Stream","id":719},"id":688439},{"elapsed_time":656,"segment":{"name":"Muir Beach East","id":158},"id":688434},{"elapsed_time":240,"segment":{"name":"Panoramic to Mill Valley descent","id":611080},"id":1011931},{"elapsed_time":125,"segment":{"name":"Thread the Needle","id":616316},"id":1499338},{"elapsed_time":574,"segment":{"name":"Bridgeway Vigilance","id":614103},"id":1332656},{"elapsed_time":512,"segment":{"name":"Sausalito to GGB Climb","id":612804},"id":1214916},{"elapsed_time":407,"segment":{"name":"Sausalito to GGB","id":132513},"id":688436},{"elapsed_time":399,"segment":{"name":"GGB Southbound","id":597755},"id":771451},{"elapsed_time":342,"segment":{"name":"Presidio Wiggle","id":609096},"id":819402},{"elapsed_time":283,"segment":{"name":"Extended Presidio Sprint ","id":623484},"id":2259387},{"elapsed_time":164,"segment":{"name":"Presidio Sprint","id":318917},"id":688440},{"elapsed_time":86,"segment":{"name":"Oak Street (Schrader to Baker)","id":611238},"id":1032310}]}'
|
77
|
+
end
|
78
|
+
|
79
|
+
def segments_index_json
|
80
|
+
#curl http://www.strava.com/api/v1/segments?name=hawk%20hill
|
81
|
+
'{"segments":[{"name":"Hawk Hill Saddle","id":99243},{"name":"Hawk Hill","id":229781},{"name":"Hawk Hill from Bunker Road","id":229783},{"name":"Ham Hawk Hill | PD","id":243831},{"name":"Hawk Hill from Fort Baker","id":461025},{"name":"Hawk Hill from Sausalito","id":522551},{"name":"Hawk Hill Backside Descent","id":589138},{"name":"Backside Hawk Hill Climb","id":615706},{"name":"Hawk Hill Saddle from Sausalito","id":617665},{"name":"Hawk Hill Saddle from Ft Baker","id":619494}]}'
|
82
|
+
end
|
83
|
+
|
84
|
+
def segment_show_json
|
85
|
+
#curl http://www.strava.com/api/v1/segments/99243
|
86
|
+
'{"segment":{"averageGrade":4.63873,"climbCategory":"4","name":"Hawk Hill Saddle","elevationGain":76.553,"distance":1771.88,"elevationHigh":172.694,"id":99243,"elevationLow":90.5013}}'
|
87
|
+
end
|
88
|
+
|
89
|
+
def segment_efforts_index_json
|
90
|
+
#curl http://www.strava.com/api/v1/segments/99243/efforts
|
91
|
+
#note: cut some out because the response was so long
|
92
|
+
'{"efforts":[{"startDate":"2010-04-29T13:59:24Z","startDateLocal":"2010-04-29T06:59:24Z", "activityId":95206,"timeZoneOffset":-8.0,"athlete":{"username":"davidbelden","name":"David Belden","id":8},"elapsedTime":247,"id":911835},{"startDate":"2010-01-28T15:04:59Z","startDateLocal":"2010-01-28T07:04:59Z","activityId":67051,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":250,"id":567839},{"startDate":"2010-01-31T18:35:51Z","startDateLocal":"2010-01-31T10:35:51Z","activityId":68093,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":261,"id":579787}],"segment":{"name":"Hawk Hill Saddle","id":99243}}'
|
93
|
+
end
|
94
|
+
|
95
|
+
def segment_efforts_index_by_athlete_id_json
|
96
|
+
#curl http://www.strava.com/api/v1/segments/99243/efforts?athleteId=1377
|
97
|
+
'{"efforts":[{"startDate":"2010-01-28T15:04:59Z","startDateLocal":"2010-01-28T07:04:59Z", "activityId":67051,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":250,"id":567839},{"startDate":"2010-02-04T15:02:29Z","startDateLocal":"2010-02-04T07:02:29Z","activityId":69675,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":264,"id":597043},{"startDate":"2010-05-11T13:54:04Z","startDateLocal":"2010-05-11T06:54:04Z","activityId":100392,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":269,"id":983029},{"startDate":"2010-07-08T13:54:40Z","startDateLocal":"2010-07-08T06:54:40Z","activityId":135052,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":271,"id":1591612},{"startDate":"2010-01-15T15:08:03Z","startDateLocal":"2010-01-15T07:08:03Z","activityId":62521,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":277,"id":517053},{"startDate":"2010-01-27T15:05:46Z","startDateLocal":"2010-01-27T07:05:46Z","activityId":66977,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":280,"id":567121},{"startDate":"2010-03-31T00:32:18Z","startDateLocal":"2010-03-30T17:32:18Z","activityId":85948,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":285,"id":792315},{"startDate":"2010-01-30T23:15:05Z","startDateLocal":"2010-01-30T15:15:05Z","activityId":67623,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":290,"id":574957},{"startDate":"2010-04-10T20:45:31Z","startDateLocal":"2010-04-10T13:45:31Z","activityId":88363,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":290,"id":831915},{"startDate":"2010-04-13T13:53:55Z","startDateLocal":"2010-04-13T06:53:55Z","activityId":96689,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":291,"id":931209},{"startDate":"2010-03-30T14:08:07Z","startDateLocal":"2010-03-30T07:08:07Z","activityId":85949,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":292,"id":792330},{"startDate":"2010-01-16T19:51:04Z","startDateLocal":"2010-01-16T11:51:04Z","activityId":62823,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":296,"id":519899},{"startDate":"2010-01-13T15:05:47Z","startDateLocal":"2010-01-13T07:05:47Z","activityId":62517,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":309,"id":517035},{"startDate":"2010-02-10T15:03:11Z","startDateLocal":"2010-02-10T07:03:11Z","activityId":73763,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":314,"id":644917},{"startDate":"2010-07-30T02:35:46Z","startDateLocal":"2010-07-29T19:35:46Z","activityId":147817,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":319,"id":1847072},{"startDate":"2010-02-08T01:09:02Z","startDateLocal":"2010-02-07T17:09:02Z","activityId":73761,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":326,"id":644899},{"startDate":"2010-05-09T01:38:55Z","startDateLocal":"2010-05-08T18:38:55Z","activityId":99414,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":326,"id":967659}],"segment":{"name":"Hawk Hill Saddle","id":99243}}'
|
98
|
+
end
|
99
|
+
|
100
|
+
def segment_efforts_index_by_athlete_id_and_start_date_json
|
101
|
+
#curl "http://www.strava.com/api/v1/segments/99243/efforts?athleteId=1377&startDate=2010-07-01"
|
102
|
+
'{"efforts":[{"startDate":"2010-07-08T13:54:40Z","startDateLocal":"2010-07-08T06:54:40Z", "activityId":135052,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":271,"id":1591612},{"startDate":"2010-07-30T02:35:46Z","startDateLocal":"2010-07-29T19:35:46Z","activityId":147817,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":319,"id":1847072}],"segment":{"name":"Hawk Hill Saddle","id":99243}}'
|
103
|
+
end
|
104
|
+
|
105
|
+
def segment_efforts_index_by_club_id_and_best_json
|
106
|
+
#using test data for club 15
|
107
|
+
#curl http://www.strava.com/api/v1/segments/99243/efforts?clubId=15&best=true
|
108
|
+
'{"efforts":[{"startDate":"2010-04-29T13:59:24Z","startDateLocal":"2010-04-29T06:59:24Z", "activityId":95206,"timeZoneOffset":-8.0,"athlete":{"username":"davidbelden","name":"David Belden","id":8},"elapsedTime":247,"id":911835},{"startDate":"2010-01-28T15:04:59Z","startDateLocal":"2010-01-28T07:04:59Z","activityId":67051,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":250,"id":567839},{"startDate":"2010-01-31T18:35:51Z","startDateLocal":"2010-01-31T10:35:51Z","activityId":68093,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":261,"id":579787},{"startDate":"2009-11-05T18:25:24Z","startDateLocal":"2009-11-05T10:25:24Z","activityId":64013,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":275,"id":533823},{"startDate":"2010-07-01T13:53:26Z","startDateLocal":"2010-07-01T06:53:26Z","activityId":128896,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":282,"id":1463618},{"startDate":"2010-06-13T00:56:07Z","startDateLocal":"2010-06-12T17:56:07Z","activityId":118803,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":283,"id":1297738},{"startDate":"2009-09-04T02:27:14Z","startDateLocal":"2009-09-03T18:27:14Z","activityId":33479,"timeZoneOffset":-8.0,"athlete":{"username":"ykawase","name":"T. Joe Mulvaney","id":1107},"elapsedTime":284,"id":139887},{"startDate":"2010-06-17T13:54:17Z","startDateLocal":"2010-06-17T06:54:17Z","activityId":120897,"timeZoneOffset":-8.0,"athlete":{"username":"matth","name":"Matt Hough","id":4542},"elapsedTime":286,"id":1336905},{"startDate":"2010-06-08T13:55:08Z","startDateLocal":"2010-06-08T06:55:08Z","activityId":115701,"timeZoneOffset":-8.0,"athlete":{"username":"jonringer","name":"Jon Ringer","id":4604},"elapsedTime":287,"id":1245196},{"startDate":"2010-04-13T13:53:33Z","startDateLocal":"2010-04-13T06:53:33Z","activityId":88677,"timeZoneOffset":-8.0,"athlete":{"username":"danv","name":"Dan Vigil","id":1167},"elapsedTime":291,"id":835674},{"startDate":"2010-03-30T14:08:06Z","startDateLocal":"2010-03-30T07:08:06Z","activityId":85754,"timeZoneOffset":-8.0,"athlete":{"username":"mgaiman","name":"Michael Gaiman","id":721},"elapsedTime":294,"id":790228},{"startDate":"2010-06-12T00:06:18Z","startDateLocal":"2010-06-11T17:06:18Z","activityId":118354,"timeZoneOffset":-8.0,"athlete":{"username":"jherrick","name":"Jason Herrick","id":1665},"elapsedTime":294,"id":1290745},{"startDate":"2009-11-29T22:13:26Z","startDateLocal":"2009-11-29T14:13:26Z","activityId":52093,"timeZoneOffset":-8.0,"athlete":{"username":"jblohm","name":"Joern Blohm","id":1723},"elapsedTime":296,"id":416889},{"startDate":"2010-01-28T15:04:48Z","startDateLocal":"2010-01-28T07:04:48Z","activityId":67047,"timeZoneOffset":-8.0,"athlete":{"username":"pd","name":"Peter Durham","id":45},"elapsedTime":298,"id":567793},{"startDate":"2010-03-05T17:40:47Z","startDateLocal":"2010-03-05T09:40:47Z","activityId":78672,"timeZoneOffset":-8.0,"athlete":{"username":"cb","name":"Carl B","id":1889},"elapsedTime":298,"id":699178},{"startDate":"2010-07-02T02:22:42Z","startDateLocal":"2010-07-01T19:22:42Z","activityId":129698,"timeZoneOffset":-8.0,"athlete":{"username":"bprescott","name":"Bruce Prescott","id":2061},"elapsedTime":310,"id":1478082},{"startDate":"2009-09-04T02:27:17Z","startDateLocal":"2009-09-03T18:27:17Z","activityId":36895,"timeZoneOffset":-8.0,"athlete":{"username":"ycolin","name":"Youenn Colin","id":1127},"elapsedTime":312,"id":258717},{"startDate":"2010-04-18T18:54:36Z","startDateLocal":"2010-04-18T11:54:36Z","activityId":90940,"timeZoneOffset":-8.0,"athlete":{"username":"tbrady","name":"Travis Brady","id":1607},"elapsedTime":312,"id":861754},{"startDate":"2009-11-19T15:05:14Z","startDateLocal":"2009-11-19T07:05:14Z","activityId":51461,"timeZoneOffset":-8.0,"athlete":{"username":"valko","name":"Andrew Valko","id":787},"elapsedTime":315,"id":409757},{"startDate":"2010-05-04T13:53:40Z","startDateLocal":"2010-05-04T06:53:40Z","activityId":100932,"timeZoneOffset":-8.0,"athlete":{"username":"qmecke","name":"Quintin Mecke","id":1529},"elapsedTime":315,"id":990554},{"startDate":"2010-06-26T16:51:41Z","startDateLocal":"2010-06-26T09:51:41Z","activityId":125957,"timeZoneOffset":-8.0,"athlete":{"username":"joemulvaney","name":"Joe Mulvaney","id":1487},"elapsedTime":316,"id":1417247},{"startDate":"2010-07-02T02:22:41Z","startDateLocal":"2010-07-01T19:22:41Z","activityId":129495,"timeZoneOffset":-8.0,"athlete":{"username":"zach","name":"Zach Bass","id":1055},"elapsedTime":319,"id":1474299},{"startDate":"2009-11-29T18:25:23Z","startDateLocal":"2009-11-29T10:25:23Z","activityId":51759,"timeZoneOffset":-8.0,"athlete":{"username":"huphtur","name":"M Appelman","id":1157},"elapsedTime":322,"id":413623},{"startDate":"2010-01-21T00:59:42Z","startDateLocal":"2010-01-20T16:59:42Z","activityId":64435,"timeZoneOffset":-8.0,"athlete":{"username":"eugenekim","name":"Eugene Kim","id":1213},"elapsedTime":322,"id":539059},{"startDate":"2009-08-20T14:02:39Z","startDateLocal":"2009-08-20T06:02:39Z","activityId":30369,"timeZoneOffset":-8.0,"athlete":{"username":"bkuczynski","name":"Brian Kuczynski","id":619},"elapsedTime":323,"id":111417},{"startDate":"2010-06-20T16:07:54Z","startDateLocal":"2010-06-20T09:07:54Z","activityId":122312,"timeZoneOffset":-8.0,"athlete":{"username":"jwells","name":"Jason Wells","id":1219},"elapsedTime":324,"id":1358461},{"startDate":"2010-03-31T00:32:19Z","startDateLocal":"2010-03-30T17:32:19Z","activityId":85839,"timeZoneOffset":-8.0,"athlete":{"username":"danno","name":"Dan Oehlberg","id":401},"elapsedTime":326,"id":791136},{"startDate":"2009-10-07T14:02:40Z","startDateLocal":"2009-10-07T06:02:40Z","activityId":40777,"timeZoneOffset":-8.0,"athlete":{"username":"tc","name":"Travis Crawford","id":723},"elapsedTime":329,"id":298897},{"startDate":"2010-04-07T01:20:36Z","startDateLocal":"2010-04-06T18:20:36Z","activityId":87672,"timeZoneOffset":-8.0,"athlete":{"username":"eneedham","name":"Erik Needham","id":4538},"elapsedTime":330,"id":818067},{"startDate":"2010-07-01T01:00:12Z","startDateLocal":"2010-06-30T18:00:12Z","activityId":128662,"timeZoneOffset":-8.0,"athlete":{"username":"nates","name":"Nate S","id":4285},"elapsedTime":330,"id":1460693},{"startDate":"2010-05-21T15:12:58Z","startDateLocal":"2010-05-21T08:12:58Z","activityId":104830,"timeZoneOffset":-8.0,"athlete":{"username":"kcowling","name":"Keith Cowling","id":3926},"elapsedTime":336,"id":1057536},{"startDate":"2010-02-17T23:28:03Z","startDateLocal":"2010-02-17T15:28:03Z","activityId":75154,"timeZoneOffset":-8.0,"athlete":{"username":"jonathanhunt","name":"Jonathan Hunt","id":2329},"elapsedTime":337,"id":662152},{"startDate":"2009-09-04T02:27:13Z","startDateLocal":"2009-09-03T18:27:13Z","activityId":33501,"timeZoneOffset":-8.0,"athlete":{"username":"greg101","name":"Gregory Allen","id":1143},"elapsedTime":340,"id":140065},{"startDate":"2009-11-17T18:49:29Z","startDateLocal":"2009-11-17T10:49:29Z","activityId":63725,"timeZoneOffset":-8.0,"athlete":{"username":"toshok","name":"Chris Toshok","id":3007},"elapsedTime":340,"id":529631},{"startDate":"2010-03-31T00:32:18Z","startDateLocal":"2010-03-30T17:32:18Z","activityId":86079,"timeZoneOffset":-8.0,"athlete":{"username":"tsantaniello","name":"T. Santaniello","id":3793},"elapsedTime":340,"id":794145},{"startDate":"2009-02-02T23:12:09Z","startDateLocal":"2009-02-02T15:12:09Z","activityId":33075,"timeZoneOffset":-8.0,"athlete":{"username":"double_d","name":"Dylan DiBona","id":1205},"elapsedTime":341,"id":136143},{"startDate":"2010-07-08T13:54:42Z","startDateLocal":"2010-07-08T06:54:42Z","activityId":133181,"timeZoneOffset":-8.0,"athlete":{"username":"spatlove","name":"S. Patlove (recumbent)","id":3875},"elapsedTime":341,"id":1547704},{"startDate":"2010-06-30T01:53:43Z","startDateLocal":"2010-06-29T18:53:43Z","activityId":128204,"timeZoneOffset":-8.0,"athlete":{"username":"mikwat","name":"Michael Watts","id":1163},"elapsedTime":345,"id":1451412},{"startDate":"2010-08-18T14:29:07Z","startDateLocal":"2010-08-18T07:29:07Z","activityId":160681,"timeZoneOffset":-8.0,"athlete":{"username":"mkahn","name":"Mark Kahn","id":4526},"elapsedTime":346,"id":2095970},{"startDate":"2010-07-08T13:54:41Z","startDateLocal":"2010-07-08T06:54:41Z","activityId":133134,"timeZoneOffset":-8.0,"athlete":{"username":"kolofsen","name":"Ken Olofsen","id":2921},"elapsedTime":348,"id":1546484},{"startDate":"2010-07-23T02:39:25Z","startDateLocal":"2010-07-22T19:39:25Z","activityId":144477,"timeZoneOffset":-8.0,"athlete":{"username":"gferrando","name":"G. Ferrando","id":1633},"elapsedTime":350,"id":1772964},{"startDate":"2009-11-15T17:58:12Z","startDateLocal":"2009-11-15T09:58:12Z","activityId":48973,"timeZoneOffset":-8.0,"athlete":{"username":"hobe","name":"Daniel Hobe","id":1113},"elapsedTime":352,"id":381555},{"startDate":"2010-07-08T13:54:41Z","startDateLocal":"2010-07-08T06:54:41Z","activityId":133179,"timeZoneOffset":-8.0,"athlete":{"username":"kmok","name":"Kent Mok","id":4607},"elapsedTime":352,"id":1547618},{"startDate":"2010-07-11T15:24:40Z","startDateLocal":"2010-07-11T08:24:40Z","activityId":134535,"timeZoneOffset":-8.0,"athlete":{"username":"nskinner","name":"nate skinner","id":1217},"elapsedTime":356,"id":1582023},{"startDate":"2009-09-16T14:45:42Z","startDateLocal":"2009-09-16T06:45:42Z","activityId":36407,"timeZoneOffset":-8.0,"athlete":{"username":"roderic","name":"R. Campbell","id":983},"elapsedTime":357,"id":170273},{"startDate":"2010-07-01T13:53:02Z","startDateLocal":"2010-07-01T06:53:02Z","activityId":128915,"timeZoneOffset":-8.0,"athlete":{"username":"mrampton","name":"Mark Rampton","id":1375},"elapsedTime":360,"id":1463925},{"startDate":"2009-09-27T20:19:43Z","startDateLocal":"2009-09-27T13:19:43Z","activityId":94786,"timeZoneOffset":-8.0,"athlete":{"username":"chilsenbeck","name":"c. hilsenbeck","id":4569},"elapsedTime":362,"id":908201},{"startDate":"2007-10-06T23:19:48Z","startDateLocal":"2007-10-06T15:19:48Z","activityId":43221,"timeZoneOffset":-8.0,"athlete":{"username":"shannon","name":"Shannon Coen","id":1137},"elapsedTime":366,"id":326985},{"startDate":"2010-08-27T02:30:56Z","startDateLocal":"2010-08-26T19:30:56Z","activityId":181412,"timeZoneOffset":-8.0,"athlete":{"username":"cgoldstein","name":"Cliff Goldstein","id":7649},"elapsedTime":367,"id":2473678},{"startDate":"2010-05-19T00:54:09Z","startDateLocal":"2010-05-18T17:54:09Z","activityId":104215,"timeZoneOffset":-8.0,"athlete":{"username":"kjeffers","name":"Kyle Jeffers","id":4540},"elapsedTime":370,"id":1047624}],"segment":{"name":"Hawk Hill Saddle","id":99243}}'
|
109
|
+
end
|
110
|
+
|
111
|
+
def segment_efforts_index_using_offset_json
|
112
|
+
#curl http://www.strava.com/api/v1/segments/99243/efforts
|
113
|
+
'{"efforts":[{"startDate":"2010-04-29T13:59:24Z","startDateLocal":"2010-04-29T06:59:24Z", "activityId":95206,"timeZoneOffset":-8.0,"athlete":{"username":"davidbelden","name":"David Belden","id":8},"elapsedTime":247,"id":911835},{"startDate":"2010-01-28T15:04:59Z","startDateLocal":"2010-01-28T07:04:59Z","activityId":67051,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":250,"id":567839},{"startDate":"2010-01-31T18:35:51Z","startDateLocal":"2010-01-31T10:35:51Z","activityId":68093,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":261,"id":579787},{"startDate":"2010-02-01T19:42:57Z","startDateLocal":"2010-02-01T11:42:57Z","activityId":68625,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":263,"id":585919},{"startDate":"2010-02-04T15:02:29Z","startDateLocal":"2010-02-04T07:02:29Z","activityId":69675,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":264,"id":597043},{"startDate":"2009-03-26T17:19:48Z","startDateLocal":"2009-03-26T09:19:48Z","activityId":1644,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":265,"id":110991},{"startDate":"2010-05-11T13:54:04Z","startDateLocal":"2010-05-11T06:54:04Z","activityId":100392,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":269,"id":983029},{"startDate":"2010-04-08T14:13:51Z","startDateLocal":"2010-04-08T07:13:51Z","activityId":87837,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":271,"id":823018},{"startDate":"2010-07-08T13:54:40Z","startDateLocal":"2010-07-08T06:54:40Z","activityId":135052,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":271,"id":1591612},{"startDate":"2010-03-28T15:44:12Z","startDateLocal":"2010-03-28T08:44:12Z","activityId":85597,"timeZoneOffset":-8.0,"athlete":{"username":"jduff80","name":"James Duff","id":4201},"elapsedTime":273,"id":789409},{"startDate":"2010-01-02T23:54:23Z","startDateLocal":"2010-01-02T15:54:23Z","activityId":57887,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":274,"id":474237},{"startDate":"2009-11-05T18:25:24Z","startDateLocal":"2009-11-05T10:25:24Z","activityId":64013,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":275,"id":533823},{"startDate":"2009-11-03T16:16:34Z","startDateLocal":"2009-11-03T08:16:34Z","activityId":64015,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":276,"id":533865},{"startDate":"2010-03-14T16:46:09Z","startDateLocal":"2010-03-14T09:46:09Z","activityId":81234,"timeZoneOffset":-8.0,"athlete":{"username":"jduff80","name":"James Duff","id":4201},"elapsedTime":276,"id":727206},{"startDate":"2010-01-15T15:08:03Z","startDateLocal":"2010-01-15T07:08:03Z","activityId":62521,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":277,"id":517053},{"startDate":"2009-08-25T14:02:54Z","startDateLocal":"2009-08-25T06:02:54Z","activityId":31223,"timeZoneOffset":-8.0,"athlete":{"username":"davidbelden","name":"David Belden","id":8},"elapsedTime":279,"id":118723},{"startDate":"2010-01-27T15:05:46Z","startDateLocal":"2010-01-27T07:05:46Z","activityId":66977,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":280,"id":567121},{"startDate":"2010-03-20T00:01:32Z","startDateLocal":"2010-03-19T17:01:32Z","activityId":85598,"timeZoneOffset":-8.0,"athlete":{"username":"jduff80","name":"James Duff","id":4201},"elapsedTime":280,"id":789427},{"startDate":"2009-09-15T14:02:42Z","startDateLocal":"2009-09-15T06:02:42Z","activityId":36223,"timeZoneOffset":-8.0,"athlete":{"username":"cdonahue","name":"C. Donahue","id":19},"elapsedTime":281,"id":168643},{"startDate":"2009-12-20T19:35:15Z","startDateLocal":"2009-12-20T11:35:15Z","activityId":55101,"timeZoneOffset":-8.0,"athlete":{"username":"npelly","name":"Nick Pelly","id":1193},"elapsedTime":281,"id":447545},{"startDate":"2010-04-22T13:52:31Z","startDateLocal":"2010-04-22T06:52:31Z","activityId":92523,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":282,"id":883190},{"startDate":"2010-07-01T13:53:26Z","startDateLocal":"2010-07-01T06:53:26Z","activityId":128896,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":282,"id":1463618},{"startDate":"2010-06-13T00:56:07Z","startDateLocal":"2010-06-12T17:56:07Z","activityId":118803,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":283,"id":1297738},{"startDate":"2009-08-20T14:02:31Z","startDateLocal":"2009-08-20T06:02:31Z","activityId":30911,"timeZoneOffset":-8.0,"athlete":{"username":"davidbelden","name":"David Belden","id":8},"elapsedTime":284,"id":115377},{"startDate":"2009-09-04T02:27:14Z","startDateLocal":"2009-09-03T18:27:14Z","activityId":33479,"timeZoneOffset":-8.0,"athlete":{"username":"ykawase","name":"T. Joe Mulvaney","id":1107},"elapsedTime":284,"id":139887},{"startDate":"2009-11-02T16:32:18Z","startDateLocal":"2009-11-02T08:32:18Z","activityId":64017,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":284,"id":533927},{"startDate":"2010-02-25T15:04:26Z","startDateLocal":"2010-02-25T07:04:26Z","activityId":180258,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":284,"id":2447316},{"startDate":"2009-09-15T14:02:45Z","startDateLocal":"2009-09-15T06:02:45Z","activityId":36247,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":285,"id":168867},{"startDate":"2010-03-13T18:17:32Z","startDateLocal":"2010-03-13T10:17:32Z","activityId":80851,"timeZoneOffset":-8.0,"athlete":{"username":"npelly","name":"Nick Pelly","id":1193},"elapsedTime":285,"id":723197},{"startDate":"2010-03-31T00:32:18Z","startDateLocal":"2010-03-30T17:32:18Z","activityId":85948,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":285,"id":792315},{"startDate":"2010-04-29T13:52:43Z","startDateLocal":"2010-04-29T06:52:43Z","activityId":95302,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":285,"id":913502},{"startDate":"2010-02-18T15:03:36Z","startDateLocal":"2010-02-18T07:03:36Z","activityId":180284,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":286,"id":2448027},{"startDate":"2010-06-17T13:54:17Z","startDateLocal":"2010-06-17T06:54:17Z","activityId":120897,"timeZoneOffset":-8.0,"athlete":{"username":"matth","name":"Matt Hough","id":4542},"elapsedTime":286,"id":1336905},{"startDate":"2010-06-08T13:55:08Z","startDateLocal":"2010-06-08T06:55:08Z","activityId":115701,"timeZoneOffset":-8.0,"athlete":{"username":"jonringer","name":"Jon Ringer","id":4604},"elapsedTime":287,"id":1245196},{"startDate":"2009-08-27T14:03:28Z","startDateLocal":"2009-08-27T06:03:28Z","activityId":31659,"timeZoneOffset":-8.0,"athlete":{"username":"davidbelden","name":"David Belden","id":8},"elapsedTime":288,"id":123513},{"startDate":"2010-02-11T15:03:48Z","startDateLocal":"2010-02-11T07:03:48Z","activityId":180259,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":288,"id":2447254},{"startDate":"2010-03-31T00:32:17Z","startDateLocal":"2010-03-30T17:32:17Z","activityId":85837,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":288,"id":791105},{"startDate":"2010-06-15T13:54:11Z","startDateLocal":"2010-06-15T06:54:11Z","activityId":120118,"timeZoneOffset":-8.0,"athlete":{"username":"jonringer","name":"Jon Ringer","id":4604},"elapsedTime":288,"id":1320679},{"startDate":"2010-07-28T02:15:20Z","startDateLocal":"2010-07-27T19:15:20Z","activityId":145753,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":288,"id":1803179},{"startDate":"2009-08-18T14:06:32Z","startDateLocal":"2009-08-18T06:06:32Z","activityId":30019,"timeZoneOffset":-8.0,"athlete":{"username":"davidbelden","name":"David Belden","id":8},"elapsedTime":290,"id":111323},{"startDate":"2010-01-30T23:15:05Z","startDateLocal":"2010-01-30T15:15:05Z","activityId":67623,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":290,"id":574957},{"startDate":"2010-02-09T22:30:46Z","startDateLocal":"2010-02-09T14:30:46Z","activityId":180286,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":290,"id":2448064},{"startDate":"2010-02-23T15:06:07Z","startDateLocal":"2010-02-23T07:06:07Z","activityId":180275,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":290,"id":2447827},{"startDate":"2010-04-10T20:45:31Z","startDateLocal":"2010-04-10T13:45:31Z","activityId":88363,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":290,"id":831915},{"startDate":"2010-04-19T00:55:24Z","startDateLocal":"2010-04-18T17:55:24Z","activityId":111444,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":290,"id":1172202},{"startDate":"2010-07-14T13:23:49Z","startDateLocal":"2010-07-14T06:23:49Z","activityId":136324,"timeZoneOffset":-8.0,"athlete":{"username":"osi","name":"Stefan Irion","id":5992},"elapsedTime":290,"id":1614192},{"startDate":"2009-10-18T01:03:11Z","startDateLocal":"2009-10-17T17:03:11Z","activityId":43251,"timeZoneOffset":-8.0,"athlete":{"username":"cdonahue","name":"C. Donahue","id":19},"elapsedTime":291,"id":327107},{"startDate":"2009-11-10T17:22:30Z","startDateLocal":"2009-11-10T09:22:30Z","activityId":64007,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":291,"id":533761},{"startDate":"2010-03-07T16:37:37Z","startDateLocal":"2010-03-07T08:37:37Z","activityId":81236,"timeZoneOffset":-8.0,"athlete":{"username":"jduff80","name":"James Duff","id":4201},"elapsedTime":291,"id":727252},{"startDate":"2010-03-31T00:32:13Z","startDateLocal":"2010-03-30T17:32:13Z","activityId":85840,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":291,"id":791162}],"segment":{"name":"Hawk Hill Saddle","id":99243}}'
|
114
|
+
end
|
115
|
+
|
116
|
+
def segment_efforts_index_using_offset_50_json
|
117
|
+
##curl http://www.strava.com/api/v1/segments/99243/efforts?offset=50
|
118
|
+
'{"efforts":[{"startDate":"2010-04-13T13:53:33Z","startDateLocal":"2010-04-13T06:53:33Z", "activityId":88677,"timeZoneOffset":-8.0,"athlete":{"username":"danv","name":"Dan Vigil","id":1167},"elapsedTime":291,"id":835674},{"startDate":"2010-04-13T13:53:55Z","startDateLocal":"2010-04-13T06:53:55Z","activityId":96689,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":291,"id":931209},{"startDate":"2010-03-30T14:08:07Z","startDateLocal":"2010-03-30T07:08:07Z","activityId":85949,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":292,"id":792330},{"startDate":"2010-03-30T14:08:06Z","startDateLocal":"2010-03-30T07:08:06Z","activityId":85748,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":294,"id":790151},{"startDate":"2010-03-30T14:08:06Z","startDateLocal":"2010-03-30T07:08:06Z","activityId":85754,"timeZoneOffset":-8.0,"athlete":{"username":"mgaiman","name":"Michael Gaiman","id":721},"elapsedTime":294,"id":790228},{"startDate":"2010-06-12T00:06:18Z","startDateLocal":"2010-06-11T17:06:18Z","activityId":118354,"timeZoneOffset":-8.0,"athlete":{"username":"jherrick","name":"Jason Herrick","id":1665},"elapsedTime":294,"id":1290745},{"startDate":"2010-07-02T02:22:43Z","startDateLocal":"2010-07-01T19:22:43Z","activityId":129273,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":294,"id":1471199},{"startDate":"2009-11-10T17:02:39Z","startDateLocal":"2009-11-10T09:02:39Z","activityId":64007,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":295,"id":533753},{"startDate":"2009-12-23T21:05:03Z","startDateLocal":"2009-12-23T13:05:03Z","activityId":57385,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":295,"id":469039},{"startDate":"2009-08-13T14:03:34Z","startDateLocal":"2009-08-13T06:03:34Z","activityId":10455,"timeZoneOffset":-8.0,"athlete":{"username":"cdonahue","name":"C. Donahue","id":19},"elapsedTime":296,"id":111261},{"startDate":"2009-11-10T17:40:30Z","startDateLocal":"2009-11-10T09:40:30Z","activityId":64007,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":296,"id":533755},{"startDate":"2009-11-29T22:13:26Z","startDateLocal":"2009-11-29T14:13:26Z","activityId":52093,"timeZoneOffset":-8.0,"athlete":{"username":"jblohm","name":"Joern Blohm","id":1723},"elapsedTime":296,"id":416889},{"startDate":"2010-01-16T19:51:04Z","startDateLocal":"2010-01-16T11:51:04Z","activityId":62823,"timeZoneOffset":-8.0,"athlete":{"username":"jsimons","name":"Jay Simons","id":1377},"elapsedTime":296,"id":519899},{"startDate":"2010-02-20T17:31:36Z","startDateLocal":"2010-02-20T09:31:36Z","activityId":148263,"timeZoneOffset":-8.0,"athlete":{"username":"jduff80","name":"James Duff","id":4201},"elapsedTime":296,"id":1854890},{"startDate":"2010-06-10T13:54:50Z","startDateLocal":"2010-06-10T06:54:50Z","activityId":117327,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":296,"id":1276926},{"startDate":"2010-07-02T02:22:43Z","startDateLocal":"2010-07-01T19:22:43Z","activityId":129293,"timeZoneOffset":-8.0,"athlete":{"username":"matth","name":"Matt Hough","id":4542},"elapsedTime":296,"id":1471693},{"startDate":"2010-03-30T14:08:07Z","startDateLocal":"2010-03-30T07:08:07Z","activityId":85752,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":297,"id":790198},{"startDate":"2010-04-21T18:54:31Z","startDateLocal":"2010-04-21T11:54:31Z","activityId":183987,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":297,"id":2520922},{"startDate":"2009-12-23T18:20:10Z","startDateLocal":"2009-12-23T10:20:10Z","activityId":63973,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":298,"id":532999},{"startDate":"2010-01-28T15:04:48Z","startDateLocal":"2010-01-28T07:04:48Z","activityId":67047,"timeZoneOffset":-8.0,"athlete":{"username":"pd","name":"Peter Durham","id":45},"elapsedTime":298,"id":567793},{"startDate":"2010-03-05T17:40:47Z","startDateLocal":"2010-03-05T09:40:47Z","activityId":78672,"timeZoneOffset":-8.0,"athlete":{"username":"cb","name":"Carl B","id":1889},"elapsedTime":298,"id":699178},{"startDate":"2009-09-03T14:03:09Z","startDateLocal":"2009-09-03T06:03:09Z","activityId":33077,"timeZoneOffset":-8.0,"athlete":{"username":"ashartsis","name":"A. Shartsis","id":381},"elapsedTime":299,"id":136231},{"startDate":"2010-01-29T16:32:01Z","startDateLocal":"2010-01-29T08:32:01Z","activityId":67451,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":299,"id":572225},{"startDate":"2010-02-17T18:23:22Z","startDateLocal":"2010-02-17T10:23:22Z","activityId":180253,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":299,"id":2447042},{"startDate":"2010-02-17T18:37:55Z","startDateLocal":"2010-02-17T10:37:55Z","activityId":180253,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":299,"id":2447041},{"startDate":"2009-08-27T14:03:29Z","startDateLocal":"2009-08-27T06:03:29Z","activityId":31667,"timeZoneOffset":-8.0,"athlete":{"username":"pd","name":"Peter Durham","id":45},"elapsedTime":300,"id":123583},{"startDate":"2010-02-26T18:46:52Z","startDateLocal":"2010-02-26T10:46:52Z","activityId":183962,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":300,"id":2520236},{"startDate":"2010-03-23T14:06:45Z","startDateLocal":"2010-03-23T07:06:45Z","activityId":83657,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":300,"id":758475},{"startDate":"2010-07-15T13:54:01Z","startDateLocal":"2010-07-15T06:54:01Z","activityId":139096,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":300,"id":1662943},{"startDate":"2009-07-14T14:03:32Z","startDateLocal":"2009-07-14T06:03:32Z","activityId":6647,"timeZoneOffset":-8.0,"athlete":{"username":"blobree","name":"Bret Lobree","id":287},"elapsedTime":301,"id":111331},{"startDate":"2010-04-07T23:30:56Z","startDateLocal":"2010-04-07T16:30:56Z","activityId":87745,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":301,"id":820721},{"startDate":"2010-04-29T13:58:54Z","startDateLocal":"2010-04-29T06:58:54Z","activityId":95245,"timeZoneOffset":-8.0,"athlete":{"username":"pd","name":"Peter Durham","id":45},"elapsedTime":301,"id":912230},{"startDate":"2010-05-28T13:51:02Z","startDateLocal":"2010-05-28T06:51:02Z","activityId":107496,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":301,"id":1105689},{"startDate":"2010-03-10T15:24:28Z","startDateLocal":"2010-03-10T07:24:28Z","activityId":80222,"timeZoneOffset":-8.0,"athlete":{"username":"jbarkow","name":"Jim Barkow","id":28},"elapsedTime":302,"id":715752},{"startDate":"2010-03-10T15:24:28Z","startDateLocal":"2010-03-10T07:24:28Z","activityId":187648,"timeZoneOffset":-8.0,"athlete":{"username":"jbarkow","name":"Jim Barkow","id":28},"elapsedTime":302,"id":2598626},{"startDate":"2010-06-01T13:53:08Z","startDateLocal":"2010-06-01T06:53:08Z","activityId":109732,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":302,"id":1144277},{"startDate":"2010-06-10T13:54:52Z","startDateLocal":"2010-06-10T06:54:52Z","activityId":117254,"timeZoneOffset":-8.0,"athlete":{"username":"jonringer","name":"Jon Ringer","id":4604},"elapsedTime":302,"id":1275990},{"startDate":"2010-06-17T13:54:18Z","startDateLocal":"2010-06-17T06:54:18Z","activityId":121208,"timeZoneOffset":-8.0,"athlete":{"username":"vitalyg","name":"Vitaly Gashpar","id":4488},"elapsedTime":302,"id":1341216},{"startDate":"2009-11-26T19:16:17Z","startDateLocal":"2009-11-26T11:16:17Z","activityId":51357,"timeZoneOffset":-8.0,"athlete":{"username":"cstrobel","name":"C. Strobel","id":2093},"elapsedTime":303,"id":408513},{"startDate":"2009-12-13T18:09:38Z","startDateLocal":"2009-12-13T10:09:38Z","activityId":63985,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":303,"id":533353},{"startDate":"2009-12-13T23:39:05Z","startDateLocal":"2009-12-13T15:39:05Z","activityId":54299,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":303,"id":440165},{"startDate":"2010-02-15T01:01:13Z","startDateLocal":"2010-02-14T17:01:13Z","activityId":180265,"timeZoneOffset":-8.0,"athlete":{"username":"jhudson","name":"Jared Hudson","id":1215},"elapsedTime":303,"id":2447422},{"startDate":"2009-10-25T16:16:24Z","startDateLocal":"2009-10-25T08:16:24Z","activityId":45291,"timeZoneOffset":-8.0,"athlete":{"username":"jwillin","name":"Jamie Willin","id":1313},"elapsedTime":304,"id":346907},{"startDate":"2009-11-25T19:43:31Z","startDateLocal":"2009-11-25T11:43:31Z","activityId":51553,"timeZoneOffset":-8.0,"athlete":{"username":"jblohm","name":"Joern Blohm","id":1723},"elapsedTime":304,"id":410953},{"startDate":"2010-03-27T18:59:00Z","startDateLocal":"2010-03-27T11:59:00Z","activityId":85043,"timeZoneOffset":-8.0,"athlete":{"username":"jjohnson","name":"J. Johnson","id":51},"elapsedTime":304,"id":781111},{"startDate":"2010-04-15T23:32:50Z","startDateLocal":"2010-04-15T16:32:50Z","activityId":89508,"timeZoneOffset":-8.0,"athlete":{"username":"dhaynes","name":"Derek Haynes","id":1781},"elapsedTime":304,"id":845989},{"startDate":"2009-04-16T23:32:49Z","startDateLocal":"2009-04-16T15:32:49Z","activityId":1863,"timeZoneOffset":-8.0,"athlete":{"username":"jordan","name":"Jordan Kobert","id":30},"elapsedTime":305,"id":111069},{"startDate":"2009-10-12T15:31:11Z","startDateLocal":"2009-10-12T07:31:11Z","activityId":64031,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":305,"id":533983},{"startDate":"2009-12-14T16:26:27Z","startDateLocal":"2009-12-14T08:26:27Z","activityId":63981,"timeZoneOffset":-8.0,"athlete":{"username":"jberkman","name":"jacob berkman","id":3005},"elapsedTime":305,"id":533275},{"startDate":"2010-03-20T17:30:41Z","startDateLocal":"2010-03-20T10:30:41Z","activityId":82682,"timeZoneOffset":-8.0,"athlete":{"username":"mwolfe","name":"Michael Wolfe","id":3589},"elapsedTime":306,"id":741508}],"segment":{"name":"Hawk Hill Saddle","id":99243}}'
|
119
|
+
end
|
120
|
+
|
121
|
+
#used in test_ride.rb, NOT test_rides.rb
|
122
|
+
def ride_show_method_json
|
123
|
+
'{"ride":{"averageSpeed":27044.0347826087,"location":"San Luis Obispo, CA","startDate":"2010-09-26T22:47:12Z","description":null,"averageWatts":156.743,"name":"from SVRMC","startDateLocal":"2010-09-26T15:47:12Z","maximumSpeed":49668.84,"timeZoneOffset":-8.0,"athlete":{"username":"ssharp","name":"Steve Sharp","id":779},"elevationGain":197.551,"distance":12958.6,"elapsedTime":1725,"bike":{"name":"Time VXR Proteam","id":527},"id":191846,"movingTime":1725}}'
|
124
|
+
end
|
125
|
+
|
126
|
+
def ride_effort_method_json
|
127
|
+
'{"ride":{"name":"from SVRMC","id":191846},"efforts":[{"elapsed_time":41,"segment":{"name":"Valley Vista Bump","id":626862},"id":2684066}]}'
|
128
|
+
end
|
129
|
+
|
130
|
+
def effort_show_method
|
131
|
+
'{"effort":{"ride":{"name":"02/28/10 San Francisco, CA","id":77563},"averageSpeed":20149.3205741627,"startDate":"2010-02-28T08:38:39-08:00","averageWatts":151.84,"startDateLocal":"2010-02-28T00:38:39-08:00","maximumSpeed":26861.148,"timeZoneOffset":-8.0,"athlete":{"username":"julianbill","name":"Julian Bill","id":1139},"elevationGain":15.8616,"distance":1181.38,"elapsedTime":209,"segment":{"name":"Panhandle to GGP","id":623323},"id":2231990,"movingTime":209}}'
|
132
|
+
end
|
133
|
+
end
|
data/test/test_base.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'mocha'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
class TestBase < Test::Unit::TestCase
|
6
|
+
###### Testing StravaApi::Base
|
7
|
+
def setup
|
8
|
+
@s = StravaApi::Base.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_create
|
12
|
+
assert @s.is_a?(StravaApi::Base)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_bad_command
|
16
|
+
StravaApi::Base.stubs(:get).with('/clubsx', {:query => {}}).raises(StravaApi::NetworkError)
|
17
|
+
|
18
|
+
expect_error(StravaApi::NetworkError) { @s.call('clubsx', 'club', {}) }
|
19
|
+
|
20
|
+
assert @s.errors.include?("NetworkError from httparty")
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_bad_command
|
24
|
+
@response = mock('HTTParty::Response', :parsed_response => '<html><body><h1>500 Internal Server Error</h1></body></html>')
|
25
|
+
StravaApi::Base.stubs(:get).with('/clubs', {:query => {}}).returns(@response)
|
26
|
+
|
27
|
+
expect_error(StravaApi::CommandError) { @s.call('clubs', 'club', {}) }
|
28
|
+
|
29
|
+
assert @s.errors.include?("Strava returned a 500 error")
|
30
|
+
end
|
31
|
+
|
32
|
+
#TODO: figure out how to stub out Httparty.get so I can test other errors
|
33
|
+
|
34
|
+
def test_call_returns_response
|
35
|
+
# result = @s.call('clubs', 'clubs', {:name => 'X'})
|
36
|
+
|
37
|
+
#TODO: figure out why this fails, as far as I can tell result is an HTTPary::Response...
|
38
|
+
#assert result.is_a?(HTTParty::Response)
|
39
|
+
end
|
40
|
+
end
|
data/test/test_club.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'mocha'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
class TestClub < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@s = StravaApi::Base.new
|
8
|
+
|
9
|
+
api_result = JSON.parse clubs_index_json
|
10
|
+
api_result.stubs(:parsed_response).returns("")
|
11
|
+
StravaApi::Base.stubs(:get).with('/clubs', {:query => {:name => 'X'}}).returns(api_result)
|
12
|
+
|
13
|
+
@club = @s.clubs("X").first
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_show
|
17
|
+
api_result = JSON.parse club_show_json
|
18
|
+
api_result.stubs(:parsed_response).returns("")
|
19
|
+
StravaApi::Base.stubs(:get).with('/clubs/23', { :query => {} }).returns(api_result)
|
20
|
+
|
21
|
+
assert @club.description.nil?
|
22
|
+
assert @club.location.nil?
|
23
|
+
|
24
|
+
result = @club.show
|
25
|
+
|
26
|
+
assert result.is_a?(StravaApi::Club)
|
27
|
+
|
28
|
+
assert @club.description == "SLO Nexus brings together people who love to ride bikes, race bikes, and promote bike riding in our community. Our fresh outlook on the local bike scene incorporates support, fun, education, and fitness and is designed to bring together the growing number"
|
29
|
+
assert @club.location == "San Luis Obispo, CA"
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_members
|
33
|
+
api_result = JSON.parse club_members_json
|
34
|
+
api_result.stubs(:parsed_response).returns("")
|
35
|
+
StravaApi::Base.stubs(:get).with('/clubs/23/members', { :query => {} }).returns(api_result)
|
36
|
+
|
37
|
+
members = @club.members
|
38
|
+
|
39
|
+
assert members.is_a?(Array)
|
40
|
+
assert members.size == 6
|
41
|
+
members.each do |member|
|
42
|
+
assert member.is_a?(StravaApi::Member)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|