Initial Commit

This commit is contained in:
2026-04-09 23:23:31 +02:00
commit 66b1c6777d
94 changed files with 15173 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
use anyhow::Context;
use serde::{Deserialize, Serialize};
const SEVENTIMER_URL: &str =
"http://www.7timer.info/bin/api.pl?lon=4.1167&lat=43.8167&product=astro&output=json";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum GoNogo {
Go,
Marginal,
Nogo,
}
impl GoNogo {
pub fn as_str(&self) -> &'static str {
match self {
GoNogo::Go => "go",
GoNogo::Marginal => "marginal",
GoNogo::Nogo => "nogo",
}
}
}
pub fn go_nogo(cloudcover: u8, seeing: u8, transparency: u8) -> GoNogo {
if cloudcover <= 2 && seeing <= 3 && transparency <= 3 {
GoNogo::Go
} else if cloudcover <= 4 && seeing <= 5 {
GoNogo::Marginal
} else {
GoNogo::Nogo
}
}
pub async fn fetch_seventimer() -> anyhow::Result<serde_json::Value> {
let client = reqwest::Client::builder()
.timeout(std::time::Duration::from_secs(30))
.build()?;
let resp = client
.get(SEVENTIMER_URL)
.send()
.await
.context("7timer request failed")?;
let json = resp.json::<serde_json::Value>().await.context("7timer JSON parse failed")?;
Ok(json)
}