1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
// @generated by satay. Do not edit by hand.
#![allow(
clippy::doc_markdown,
clippy::missing_errors_doc,
clippy::must_use_candidate,
clippy::needless_pass_by_value,
clippy::return_self_not_must_use,
clippy::single_match_else
)]
use super::{
AirTemperatureAction, Api as RootApi, RainfallAction, RelativeHumidityAction,
WindDirectionAction, WindSpeedAction,
};
/// Station-level weather observations (up to 1-minute intervals).
#[derive(Debug, Clone, Copy)]
pub struct Api<'a> {
pub(crate) api: &'a RootApi,
}
impl<'a> Api<'a> {
/// <https://api-open.data.gov.sg/v2/real-time/api/air-temperature>
///
/// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
///
/// - example: `?date=2024-07-16`
///
/// - If `date` is not provided in query parameter, API will return the latest reading
///
/// - Unit of measure for readings is `°C`
///
/// # Optional request settings
///
/// - [`date`](AirTemperatureAction::date): SGT date for which to retrieve data (YYYY-MM-DD). Omit for latest.
/// - [`pagination_token`](AirTemperatureAction::pagination_token): Pagination token for subsequent pages (only when date filter is used and more pages exist).
/// - [`x_api_key`](AirTemperatureAction::x_api_key): Optional API key for higher rate limits.
///
/// # Example
///
/// ```rust,ignore
/// let request = api
/// .weather_readings()
/// .air_temperature()
/// .date(date)
/// .request()?;
/// ```
pub fn air_temperature(&self) -> AirTemperatureAction<'a> {
AirTemperatureAction::new(self.api)
}
/// <https://api-open.data.gov.sg/v2/real-time/api/relative-humidity>
///
/// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
///
/// - example: `?date=2024-07-16`
///
/// - If `date` is not provided in query parameter, API will return the latest reading
///
/// - Unit of measure for readings is `%`
///
/// # Optional request settings
///
/// - [`date`](RelativeHumidityAction::date): SGT date for which to retrieve data (YYYY-MM-DD). Omit for latest.
/// - [`pagination_token`](RelativeHumidityAction::pagination_token): Pagination token for subsequent pages (only when date filter is used and more pages exist).
/// - [`x_api_key`](RelativeHumidityAction::x_api_key): Optional API key for higher rate limits.
///
/// # Example
///
/// ```rust,ignore
/// let request = api
/// .weather_readings()
/// .relative_humidity()
/// .date(date)
/// .request()?;
/// ```
pub fn relative_humidity(&self) -> RelativeHumidityAction<'a> {
RelativeHumidityAction::new(self.api)
}
/// <https://api-open.data.gov.sg/v2/real-time/api/wind-speed>
///
/// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
///
/// - example: `?date=2024-07-16`
///
/// - If `date` is not provided in query parameter, API will return the latest reading
///
/// - Unit of measure for readings is `Knots`
///
/// # Optional request settings
///
/// - [`date`](WindSpeedAction::date): SGT date for which to retrieve data (YYYY-MM-DD). Omit for latest.
/// - [`pagination_token`](WindSpeedAction::pagination_token): Pagination token for subsequent pages (only when date filter is used and more pages exist).
/// - [`x_api_key`](WindSpeedAction::x_api_key): Optional API key for higher rate limits.
///
/// # Example
///
/// ```rust,ignore
/// let request = api
/// .weather_readings()
/// .wind_speed()
/// .date(date)
/// .request()?;
/// ```
pub fn wind_speed(&self) -> WindSpeedAction<'a> {
WindSpeedAction::new(self.api)
}
/// <https://api-open.data.gov.sg/v2/real-time/api/wind-direction>
///
/// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
///
/// - example: `?date=2024-07-16`
///
/// - If `date` is not provided in query parameter, API will return the latest reading
///
/// - Unit of measure for readings is `°`
///
/// # Optional request settings
///
/// - [`date`](WindDirectionAction::date): SGT date for which to retrieve data (YYYY-MM-DD). Omit for latest.
/// - [`pagination_token`](WindDirectionAction::pagination_token): Pagination token for subsequent pages (only when date filter is used and more pages exist).
/// - [`x_api_key`](WindDirectionAction::x_api_key): Optional API key for higher rate limits.
///
/// # Example
///
/// ```rust,ignore
/// let request = api
/// .weather_readings()
/// .wind_direction()
/// .date(date)
/// .request()?;
/// ```
pub fn wind_direction(&self) -> WindDirectionAction<'a> {
WindDirectionAction::new(self.api)
}
/// <https://api-open.data.gov.sg/v2/real-time/api/rainfall>
///
/// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
///
/// - example: `?date=2024-07-16`
///
/// - If `date` is not provided in query parameter, API will return the latest reading
///
/// - Unit of measure for readings is `mm`
///
/// # Optional request settings
///
/// - [`date`](RainfallAction::date): SGT date for which to retrieve data (YYYY-MM-DD). Omit for latest.
/// - [`pagination_token`](RainfallAction::pagination_token): Pagination token for subsequent pages (only when date filter is used and more pages exist).
/// - [`x_api_key`](RainfallAction::x_api_key): Optional API key for higher rate limits.
///
/// # Example
///
/// ```rust,ignore
/// let request = api
/// .weather_readings()
/// .rainfall()
/// .date(date)
/// .request()?;
/// ```
pub fn rainfall(&self) -> RainfallAction<'a> {
RainfallAction::new(self.api)
}
}