strava_wrapper/filters/
segments.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 ExploreSegments {
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 ExploreSegments {
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 ListStarredSegments {
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 ListStarredSegments {
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 GetSegment {
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 GetSegment {
52    async fn send(mut self) -> Result<Vec<User>, ErrorWrapper> {
53        get_with_query_and_path(self.clone(), &self.token).await
54    }
55}