Skip to main content

strava_wrapper/models/
stream.rs

1//! Activity / segment / route stream types.
2
3use super::common::LatLng;
4use serde::{Deserialize, Serialize};
5
6/// The `key_by_type=true` shape of a stream response: every channel is
7/// optional, only those requested via `keys=...` will be populated.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct StreamSet {
10    pub time: Option<TimeStream>,
11    pub distance: Option<DistanceStream>,
12    pub latlng: Option<LatLngStream>,
13    pub altitude: Option<AltitudeStream>,
14    pub velocity_smooth: Option<SmoothVelocityStream>,
15    pub heartrate: Option<HeartrateStream>,
16    pub cadence: Option<CadenceStream>,
17    pub watts: Option<PowerStream>,
18    pub temp: Option<TemperatureStream>,
19    pub moving: Option<MovingStream>,
20    pub grade_smooth: Option<SmoothGradeStream>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct BaseStream {
25    pub original_size: Option<i32>,
26    pub resolution: Option<String>,
27    pub series_type: Option<String>,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct AltitudeStream {
32    pub original_size: Option<i32>,
33    pub resolution: Option<String>,
34    pub series_type: Option<String>,
35    pub data: Option<Vec<f32>>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct CadenceStream {
40    pub original_size: Option<i32>,
41    pub resolution: Option<String>,
42    pub series_type: Option<String>,
43    pub data: Option<Vec<i32>>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct DistanceStream {
48    pub original_size: Option<i32>,
49    pub resolution: Option<String>,
50    pub series_type: Option<String>,
51    pub data: Option<Vec<f32>>,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct HeartrateStream {
56    pub original_size: Option<i32>,
57    pub resolution: Option<String>,
58    pub series_type: Option<String>,
59    pub data: Option<Vec<i32>>,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct LatLngStream {
64    pub original_size: Option<i32>,
65    pub resolution: Option<String>,
66    pub series_type: Option<String>,
67    pub data: Option<Vec<LatLng>>,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct MovingStream {
72    pub original_size: Option<i32>,
73    pub resolution: Option<String>,
74    pub series_type: Option<String>,
75    pub data: Option<Vec<bool>>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
79pub struct PowerStream {
80    pub original_size: Option<i32>,
81    pub resolution: Option<String>,
82    pub series_type: Option<String>,
83    pub data: Option<Vec<i32>>,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize)]
87pub struct SmoothGradeStream {
88    pub original_size: Option<i32>,
89    pub resolution: Option<String>,
90    pub series_type: Option<String>,
91    pub data: Option<Vec<f32>>,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize)]
95pub struct SmoothVelocityStream {
96    pub original_size: Option<i32>,
97    pub resolution: Option<String>,
98    pub series_type: Option<String>,
99    pub data: Option<Vec<f32>>,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct TemperatureStream {
104    pub original_size: Option<i32>,
105    pub resolution: Option<String>,
106    pub series_type: Option<String>,
107    pub data: Option<Vec<i32>>,
108}
109
110#[derive(Debug, Clone, Serialize, Deserialize)]
111pub struct TimeStream {
112    pub original_size: Option<i32>,
113    pub resolution: Option<String>,
114    pub series_type: Option<String>,
115    pub data: Option<Vec<i32>>,
116}