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