italo_api/station/
mod.rs

1use derive_new::new;
2use getset::Getters;
3use serde::Deserialize;
4
5#[derive(Deserialize, Debug, Getters)]
6#[serde(rename_all = "camelCase")]
7#[get = "pub"]
8pub struct StationCode {
9    code: String,
10    url_coding: String,
11}
12
13#[derive(Deserialize, Debug, Getters)]
14#[get = "pub"]
15pub struct StationLabel {
16    label: String,
17    value: String,
18}
19
20/// Station metadata
21#[derive(Debug, Getters, new)]
22#[get = "pub"]
23pub struct Station {
24    /// Internal italotreno ID
25    code: String,
26
27    /// Partial URL to access <https://italoinviaggio.italotreno.it/it/stazione>
28    url_coding: String,
29
30    /// Human friendly station name
31    name: String,
32}
33
34/// Abstraction over departure and departure board for a station
35#[derive(Deserialize, Debug, Getters)]
36#[get = "pub"]
37pub struct StationRealtime {
38    #[serde(rename(deserialize = "ListaTreniArrivo"))]
39    arrival_board: Vec<StationTrainRealtime>,
40
41    #[serde(rename(deserialize = "ListaTreniPartenza"))]
42    departure_board: Vec<StationTrainRealtime>,
43}
44
45/// Train data during its stay at the station
46#[derive(Deserialize, Debug, Getters)]
47#[get = "pub"]
48pub struct StationTrainRealtime {
49    /// Train number
50    #[serde(rename(deserialize = "Numero"))]
51    number: String,
52
53    /// Train end point
54    #[serde(rename(deserialize = "DescrizioneLocalita"))]
55    destination: String,
56
57    /// Scheduled departure time
58    #[serde(rename(deserialize = "OraPassaggio"))]
59    scheduled_time: String,
60
61    /// Real departure time
62    #[serde(rename(deserialize = "NuovoOrario"))]
63    forecast_time: String,
64
65    /// Train platform
66    #[serde(rename(deserialize = "Binario"))]
67    platform: String,
68
69    /// Generic trip description
70    #[serde(rename(deserialize = "Descrizione"))]
71    description: String,
72}