Initial Commit
This commit is contained in:
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user