use super::epoch::EpochDay;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Context {
pub longitude_deg: Option<f64>,
pub latitude_deg: Option<f64>,
pub delta_t_seconds: Option<f64>,
pub timezone_offset_hours: Option<f64>,
pub custom_epoch: Option<EpochDay>,
#[serde(default)]
pub options: HashMap<String, String>,
#[serde(default)]
pub cutoffs: HashMap<String, EpochDay>, }
impl Context {
pub fn validate(&self) -> Result<(), String> {
if let Some(lon) = self.longitude_deg
&& !(-180.0..=180.0).contains(&lon)
{
return Err("Longitude out of range".into());
}
if let Some(lat) = self.latitude_deg
&& !(-90.0..=90.0).contains(&lat)
{
return Err("Latitude out of range".into());
}
Ok(())
}
}