6 releases

0.5.2 May 20, 2024
0.5.1 May 18, 2024
0.4.0 May 12, 2024
0.3.3 May 8, 2024

#519 in Web programming

MIT license

51KB
910 lines

Quality Gate Status Coverage Status Crates.io Version Crates.io License docs.rs Stand With Ukraine

ralertsinua-http

Rust async API wrapper (reqwest) & TUI (ratatui) for alerts.in.ua

screencast

Introduction

The Alerts.in.ua API Client is a Rust library that simplifies access to the alerts.in.ua API service. It provides real-time information about air raid alerts and other potential threats.

Installation

To install the Alerts.in.ua API Client, run the following command in your terminal:

cargo add ralertsinua-http

Usage

⚠️ Before you can use this library, you need to obtain an API token by submitting an API request form.

Here's an basic example of how to use the library to get a list of active alerts:

Async:

use ralertsinua_http::{AlertsInUaClient, API_BASE_URL}

#[tokio::main]
async fn main() -> Result<()> {
    # Initialize the client with your token
    alerts_client = AlertsInUaClient(API_BASE_URL, "your_token");

    # Get the active alerts
    active_alerts = await alerts_client.get_active_alerts();

    print!("active_alerts: {}", active_alerts.into());
}

Alerts

Alerts class is a collection of alerts and provides various methods to filter and access these alerts.

When user call client.get_active_alerts() it returns Alerts class.

Methods

filter(*args: str) -> Vec

This method filters the alerts based on the given parameters.

filtered_alerts = active_alerts.filter('location_oblast', 'Донецька область','alert_type','air_raid')

In this example, filtered_alerts will contain all the air raid alerts that have the location oblast as 'Донецька область'.

get_alerts_by_location_title(location_title: str) -> Vec

This method returns all the alerts from specified location.

kyiv_alerts = active_alerts.get_alerts_by_location_title(. Київ')

get_air_raid_alerts() -> Vec

This method returns all the alerts that are of alert type 'air_raid'.

air_raid_alerts = active_alerts.get_air_raid_alerts()

get_oblast_alerts() -> Vec

This method returns all the alerts that are of location type 'oblast'.

oblast_alerts = active_alerts.get_oblast_alerts()

get_raion_alerts() -> Vec

This method returns all the alerts that are of location type 'raion'.

raion_alerts = active_alerts.get_raion_alerts()

get_hromada_alerts() -> Vec

This method returns all the alerts that are of location type 'hromada'.

hromada_alerts = active_alerts.get_hromada_alerts()

get_city_alerts() -> Vec

This method returns all the alerts that are of location type 'city'.

city_alerts = active_alerts.get_city_alerts()

get_alerts_by_alert_type(alert_type: str) -> Vec

This method returns all the alerts that are of the given alert type.

artillery_shelling_alerts = active_alerts.get_alerts_by_alert_type('artillery_shelling')

get_alerts_by_location_type(location_type: str) -> Vec

This method returns all the alerts that are of the given location type.

urban_location_alerts = active_alerts.get_alerts_by_location_type('raion')

get_alerts_by_oblast(oblast_title: str) -> Vec

This method returns all the alerts that are of the given oblast title.

donetsk_oblast_alerts = active_alerts.get_alerts_by_oblast('Донецька область')

get_alerts_by_location_uid(location_uid: str) -> Vec

This method returns all the alerts that have the given location uid.

location_uid_alerts = active_alerts.get_alerts_by_location_uid('123456')

get_artillery_shelling_alerts() -> Vec

This method returns all the alerts that are of alert type 'artillery_shelling'.

artillery_shelling_alerts = active_alerts.get_artillery_shelling_alerts()

get_urban_fights_alerts() -> Vec

This method returns all the alerts that are of alert type 'urban_fights'.

urban_fights_alerts = active_alerts.get_urban_fights_alerts()

get_nuclear_alerts() -> Vec

This method returns all the alerts that are of alert type 'nuclear'.

nuclear_alerts = active_alerts.get_nuclear_alerts()

get_chemical_alerts() -> Vec

This method returns all the alerts that are of alert type 'chemical'.

chemical_alerts = active_alerts.get_chemical_alerts()

get_all_alerts() -> Vec

This method returns all alerts.

all_alerts = active_alerts.get_all_alerts()

or you can use shortcut:

for alert in active_alerts:
    print!(alert)

get_last_updated_at() -> datetime.datetime

This method returns the datetime object representing the time when the alert information was last updated (Kyiv timezone).

last_updated_at = alerts.get_last_updated_at()

get_disclaimer() -> str

This method returns the disclaimer associated with the alert information.

disclaimer = alerts.get_disclaimer()

License

MIT 2024

*[TUI]: Terminal User Interface

Dependencies

~6–18MB
~250K SLoC