22 lines
867 B
Rust
22 lines
867 B
Rust
use crate::{
|
|
coords::Coordinates,
|
|
formats::speed_unit::{speed_to_string, SpeedUnit},
|
|
formats::temp_unit::{temp_to_string, TempUnit},
|
|
open_meteo::current_weather::CurrentWeather,
|
|
};
|
|
|
|
pub fn request_current_weather(
|
|
coords: &Coordinates,
|
|
temp_unit: &TempUnit,
|
|
speed_unit: &SpeedUnit,
|
|
) -> Result<CurrentWeather, ureq::Error> {
|
|
let url = format!(
|
|
"https://api.open-meteo.com/v1/forecast?latitude={}&longitude={}&temperature_unit={}&windspeed_unit={}¤t_weather=true",
|
|
coords.latitude, coords.longitude, temp_to_string(temp_unit), speed_to_string(speed_unit)
|
|
);
|
|
let mut body: serde_json::Value = ureq::get(&url).call()?.into_json()?;
|
|
let current_weather = body["current_weather"].take();
|
|
let current_weather: CurrentWeather = serde_json::from_value(current_weather).unwrap();
|
|
Ok(current_weather)
|
|
}
|