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::{Api as RootApi, NeaWeatherSubApi, UvAction, WeatherSubApiAction};
/// UV index, lightning, and heat stress (WBGT) data.
#[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/uv>
    ///
    /// - Updated between 7 AM and 7 PM everyday
    ///
    /// - The UV index value is averaged over the preceding hour
    ///
    /// - 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 `Ultraviolet Index`
    ///
    /// # Optional request settings
    ///
    /// - [`date`](UvAction::date): SGT date for which to retrieve data (YYYY-MM-DD). Omit for latest.
    /// - [`pagination_token`](UvAction::pagination_token): Pagination token for subsequent pages (only when date filter is used and more pages exist).
    /// - [`x_api_key`](UvAction::x_api_key): Optional API key for higher rate limits.
    ///
    /// # Example
    ///
    /// ```rust,ignore
    /// let request = api
    ///     .environment()
    ///     .uv()
    ///     .date(date)
    ///     .request()?;
    /// ```
    pub fn uv(&self) -> UvAction<'a> {
        UvAction::new(self.api)
    }
    /// Unified weather sub-API endpoint.
    ///
    /// - `?api=lightning` — Cloud-to-ground and cloud-to-cloud lightning strikes. Updated every ~2–3 minutes.
    ///
    /// - `?api=wbgt` — Wet Bulb Globe Temperature heat stress readings. Updated every 15 minutes.
    ///
    /// <https://api-open.data.gov.sg/v2/real-time/api/weather?api=lightning>
    ///
    /// - Updated multiple times throughout the day
    ///
    /// - Filter for a specific date by providing `date` in query parameter (YYYY-MM-DD).
    ///
    /// - example: `?date=2025-01-16`
    ///
    /// - If `date` is not provided in query parameter, API will return the latest lightning observation
    ///
    /// # Arguments
    ///
    /// - `api`: Sub-API selector (lightning or wbgt). Required.
    ///
    /// # Optional request settings
    ///
    /// - [`date`](WeatherSubApiAction::date): SGT date for which to retrieve data (YYYY-MM-DD). Omit for latest.
    /// - [`pagination_token`](WeatherSubApiAction::pagination_token): Pagination token for subsequent pages (only when date filter is used and more pages exist).
    /// - [`x_api_key`](WeatherSubApiAction::x_api_key): Optional API key for higher rate limits.
    ///
    /// # Example
    ///
    /// ```rust,ignore
    /// let request = api
    ///     .environment()
    ///     .weather_sub_api(api)
    ///     .date(date)
    ///     .request()?;
    /// ```
    pub fn weather_sub_api(&self, api: NeaWeatherSubApi) -> WeatherSubApiAction<'a> {
        WeatherSubApiAction::new(self.api, api)
    }
}