1use getset::Getters;
2use serde::Deserialize;
3
4#[derive(Deserialize, Debug, Getters)]
6#[serde(rename_all = "PascalCase")]
7#[get = "pub"]
8pub struct TrainRealtime {
9 last_update: String,
10 train_schedule: TrainSchedule,
11}
12
13#[derive(Deserialize, Debug, Getters)]
15#[get = "pub"]
16#[serde(rename_all = "PascalCase")]
17pub struct TrainSchedule {
18 train_number: String,
20
21 rfi_train_number: String,
23
24 #[serde(rename(deserialize = "DepartureDate"))]
26 departure_time: String,
27
28 #[serde(rename(deserialize = "DepartureStationDescription"))]
30 departure_station_name: String,
31
32 #[serde(rename(deserialize = "ArrivalDate"))]
34 arrival_time: String,
35
36 #[serde(rename(deserialize = "ArrivalStationDescription"))]
38 arrival_station_name: String,
39
40 #[serde(rename(deserialize = "Distruption"))]
42 disruption: Disruption,
43
44 #[serde(rename(deserialize = "StazionePartenza"))]
46 departure_station: TrainStation,
47
48 #[serde(rename(deserialize = "StazioniFerme"))]
50 stations_with_stop: Vec<TrainStation>,
51
52 #[serde(rename(deserialize = "StazioniNonFerme"))]
54 stations_with_transit: Vec<TrainStation>,
55}
56
57#[derive(Deserialize, Debug, Getters)]
59#[serde(rename_all = "PascalCase")]
60#[get = "pub"]
61pub struct Disruption {
62 delay_amount: i32,
64
65 location_code: String,
67
68 warning: bool,
70
71 running_state: u16,
73}
74
75#[derive(Deserialize, Debug, Getters)]
77#[serde(rename_all = "PascalCase")]
78#[get = "pub"]
79pub struct TrainStation {
80 location_code: String,
82
83 location_description: String,
85
86 rfi_location_code: String,
88
89 estimated_departure_time: String,
91
92 actual_departure_time: String,
94
95 estimated_arrival_time: String,
97
98 actual_arrival_time: String,
100
101 #[serde(rename(deserialize = "ActualArrivalPlatform"))]
103 platform: Option<String>,
104
105 #[serde(rename(deserialize = "StationNumber"))]
107 sequence: u8,
108}