strava_wrapper/filters/
stats.rs

1use crate::models::ActivityStats;
2use crate::query::{
3    get_with_query_and_path, Endpoint, ErrorWrapper, PathQuery, Query, Sendable, ID,
4};
5use async_trait::async_trait;
6use std::collections::HashMap;
7use strava_wrapper_macros::{Endpoint, PathQuery, Query, ID};
8
9#[derive(Debug, Clone, Endpoint, Query, PathQuery, ID)]
10pub struct GetAthleteStats {
11    url: String,
12    token: String,
13    path: String,
14    query: Vec<(String, String)>,
15    path_params: Vec<(String, String)>,
16}
17
18impl GetAthleteStats {
19    pub fn new(url: impl Into<String>, token: impl Into<String>, path: impl Into<String>) -> Self {
20        Self {
21            url: url.into(),
22            token: token.into(),
23            path: path.into(),
24            query: Vec::new(),
25            path_params: Vec::new(),
26        }
27    }
28}
29
30#[async_trait]
31impl Sendable<ActivityStats> for GetAthleteStats {
32    async fn send(mut self) -> Result<ActivityStats, ErrorWrapper> {
33        get_with_query_and_path(self.clone(), &self.token).await
34    }
35}