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
use log::debug;
use std::rc::Rc;
use surf;

use crate::configuration::Configuration;
use crate::models::DetailedActivity;

pub struct ActivitiesApi {
    configuration: Rc<Configuration>,
}

impl ActivitiesApi {
    pub fn new(configuration: Rc<Configuration>) -> ActivitiesApi {
        ActivitiesApi {
            configuration: configuration,
        }
    }

    pub async fn get_activity_by_id(
        &self,
        id: i64,
        access_token: String,
    ) -> Result<DetailedActivity, Box<dyn std::error::Error + Send + Sync + 'static>> {
        debug!("get_activity_by_id {}", id);
        let uri = format!("{}/activities/{id}", self.configuration.base_path, id = id);
        let authorization = format!("Bearer {}", access_token);
        surf::get(uri)
            .set_header("Authorization", authorization)
            .recv_json::<DetailedActivity>()
            .await
    }

    pub async fn get_logged_in_athlete_activities(
        &self,
        before: i32,
        after: i32,
        page: i32,
        per_page: i32,
        access_token: String,
    ) -> Result<Vec<DetailedActivity>, Box<dyn std::error::Error + Send + Sync + 'static>> {
        debug!("get_logged_in_athlete_activities");
        let uri = format!(
            "{}/athlete/activities?before={}&after={}&page={}&per_page={}",
            self.configuration.base_path, before, after, page, per_page
        );
        let authorization = format!("Bearer {}", access_token);
        surf::get(uri)
            .set_header("Authorization", authorization)
            .recv_json::<Vec<DetailedActivity>>()
            .await
    }
}