strava_wrapper/filters/
routes.rs

1use crate::models::User;
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 GetRoute {
11    url: String,
12    token: String,
13    path: String,
14    query: Vec<(String, String)>,
15    path_params: Vec<(String, String)>,
16}
17
18#[async_trait]
19impl Sendable<Vec<User>> for GetRoute {
20    async fn send(mut self) -> Result<Vec<User>, ErrorWrapper> {
21        get_with_query_and_path(self.clone(), &self.token).await
22    }
23}
24
25#[derive(Debug, Clone, Endpoint, Query, PathQuery, ID)]
26pub struct ListAthleteRoutes {
27    url: String,
28    token: String,
29    path: String,
30    query: Vec<(String, String)>,
31    path_params: Vec<(String, String)>,
32}
33
34#[async_trait]
35impl Sendable<Vec<User>> for ListAthleteRoutes {
36    async fn send(mut self) -> Result<Vec<User>, ErrorWrapper> {
37        get_with_query_and_path(self.clone(), &self.token).await
38    }
39}
40
41#[derive(Debug, Clone, Endpoint, Query, PathQuery, ID)]
42pub struct ExportTCXRoute {
43    url: String,
44    token: String,
45    path: String,
46    query: Vec<(String, String)>,
47    path_params: Vec<(String, String)>,
48}
49
50#[async_trait]
51impl Sendable<Vec<User>> for ExportTCXRoute {
52    async fn send(mut self) -> Result<Vec<User>, ErrorWrapper> {
53        get_with_query_and_path(self.clone(), &self.token).await
54    }
55}
56
57#[derive(Debug, Clone, Endpoint, Query, PathQuery, ID)]
58pub struct ExportGPXRoute {
59    url: String,
60    token: String,
61    path: String,
62    query: Vec<(String, String)>,
63    path_params: Vec<(String, String)>,
64}
65
66#[async_trait]
67impl Sendable<Vec<User>> for ExportGPXRoute {
68    async fn send(mut self) -> Result<Vec<User>, ErrorWrapper> {
69        get_with_query_and_path(self.clone(), &self.token).await
70    }
71}