nea-rs 0.5.0

A type-safe, sans-IO Rust client for Singapore NEA real-time weather and environmental APIs.
Documentation
// @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)
    }
}