strava_wrapper/filters/
routes.rs1use 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}