Skip to main content

strava_wrapper/models/
common.rs

1//! Shared primitives used across multiple resource types.
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct LatLng(pub f64, pub f64);
7
8#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
9pub struct Map {
10    pub id: String,
11    pub polyline: Option<String>,
12    pub resource_state: u8,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct PolylineMap {
17    pub id: Option<String>,
18    pub polyline: Option<String>,
19    pub summary_polyline: Option<String>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct PhotosSummary {
24    pub count: Option<i32>,
25    pub primary: Option<PhotosSummaryPrimary>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct PhotosSummaryPrimary {
30    pub id: Option<i64>,
31    pub source: Option<i32>,
32    pub unique_id: Option<String>,
33    pub urls: Option<String>,
34}
35
36/// Generic Strava error detail (shape returned inside various response bodies).
37/// Distinct from [`crate::query::ErrorWrapper`] — this is a serializable
38/// field-level error, not the outer transport error.
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct Error {
41    pub code: Option<String>,
42    pub field: Option<String>,
43    pub resource: Option<String>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct Fault {
48    pub errors: Option<Vec<Error>>,
49    pub message: Option<String>,
50}