strava_wrapper/filters/
athlete.rs1use crate::models::{Activity, DetailedAthlete, Lap};
2use crate::query::{
3 get_with_query_and_path, After, Before, Endpoint, ErrorWrapper, Page, PathQuery, PerPage,
4 Query, Sendable, ID,
5};
6use async_trait::async_trait;
7use std::collections::HashMap;
8use strava_wrapper_macros::{After, Before, Endpoint, Page, PathQuery, PerPage, Query, ID};
9
10#[derive(Debug, Clone, Endpoint, Query, PathQuery)]
13pub struct GetAthlete {
14 url: String,
15 token: String,
16 path: String,
17 query: Vec<(String, String)>,
18 path_params: Vec<(String, String)>,
19}
20
21#[async_trait]
22impl Sendable<DetailedAthlete> for GetAthlete {
23 async fn send(mut self) -> Result<DetailedAthlete, ErrorWrapper> {
24 get_with_query_and_path(self.clone(), &self.token).await
26 }
27}
28
29#[derive(Debug, Clone, Endpoint, Query, PathQuery, ID)]
30pub struct ListAthleteClubs {
31 url: String,
32 token: String,
33 path: String,
34 query: Vec<(String, String)>,
35 path_params: Vec<(String, String)>,
36}
37
38#[async_trait]
39impl Sendable<Vec<Lap>> for ListAthleteClubs {
40 async fn send(mut self) -> Result<Vec<Lap>, ErrorWrapper> {
41 get_with_query_and_path(self.clone(), &self.token).await
42 }
43}
44
45#[derive(Debug, Clone, Endpoint, Query, PathQuery, Before, After, Page, PerPage)]
46pub struct ListAthleteActivities {
47 url: String,
48 token: String,
49 path: String,
50 query: Vec<(String, String)>,
51 path_params: Vec<(String, String)>,
52}
53
54#[async_trait]
55impl Sendable<Vec<Activity>> for ListAthleteActivities {
56 async fn send(mut self) -> Result<Vec<Activity>, ErrorWrapper> {
57 get_with_query_and_path(self.clone(), &self.token).await
58 }
59}