1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
use api::{self, Paginated, AccessToken, ResourceState};
use athletes::Athlete;
use error::Result;
use http;
use segments::Segment;
#[derive(Debug, RustcDecodable)]
pub struct SegmentEffort {
id: i64,
resource_state: ResourceState,
name: String,
athlete: Athlete,
elapsed_time: u32,
moving_time: u32,
start_date: String,
start_date_local: String,
distance: f32,
start_index: u32,
end_index: u32,
average_cadence: f32,
average_watts: f32,
device_watts: bool,
average_heartrate: f32,
max_heartrate: f32,
segment: Segment,
kom_rank: Option<u8>,
pr_rank: Option<u8>
}
impl SegmentEffort {
pub fn list_for_segment(token: &AccessToken, id: u32) -> Result<Paginated<SegmentEffort>> {
let url = api::v3(token, format!("segments/{}/all_efforts", id));
let efforts = try!(http::get::<Vec<SegmentEffort>>(&url[..]));
Ok(Paginated::new(url, efforts))
}
}
#[cfg(feature = "api_test")]
#[cfg(test)]
mod api_tests {
use super::SegmentEffort;
use api::AccessToken;
#[test]
fn get_efforts_for_segment() {
let token = AccessToken::new_from_env().unwrap();
let pager = SegmentEffort::list_for_segment(&token, 646257).unwrap();
println!("{:?}", pager);
}
}