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)
 | 
						|
}
 |