#![deny(
warnings,
nonstandard_style,
unused,
future_incompatible,
rust_2018_idioms,
unsafe_code
)]
#![deny(clippy::all, clippy::nursery, clippy::pedantic)]
#![recursion_limit = "128"]
#![doc(
html_logo_url = "https://senpy.club/favicon.png",
html_favicon_url = "https://senpy.club/favicon.png"
)]
pub const SENPY_CLUB_API_BASE_URL: &str = "https://api.senpy.club";
pub const SENPY_CLUB_API_CURRENT_VERSION: u32 = 2;
#[allow(clippy::useless_transmute)]
pub const SENPY_CLUB_API_URL: &str = const_format::formatcp!(
"{}/v{}",
SENPY_CLUB_API_BASE_URL,
SENPY_CLUB_API_CURRENT_VERSION
);
#[derive(serde_derive::Serialize, serde_derive::Deserialize, Debug)]
pub struct Random {
pub language: String,
pub image: String,
}
pub fn languages() -> reqwest::Result<Vec<String>> {
reqwest::blocking::Client::new()
.get(format!("{}/languages", SENPY_CLUB_API_URL))
.header("User-Agent", env!("GIT_COMMIT_HASH"))
.send()?
.json::<Vec<String>>()
}
pub fn language(language: &str) -> reqwest::Result<Vec<String>> {
reqwest::blocking::Client::new()
.get(format!("{}/language/{}", SENPY_CLUB_API_URL, language))
.header("User-Agent", env!("GIT_COMMIT_HASH"))
.send()?
.json::<Vec<String>>()
}
pub fn random() -> reqwest::Result<Random> {
reqwest::blocking::Client::new()
.get(format!("{}/random", SENPY_CLUB_API_URL))
.header("User-Agent", env!("GIT_COMMIT_HASH"))
.send()?
.json::<Random>()
}
pub fn status() -> reqwest::Result<bool> {
Ok(
reqwest::blocking::Client::new()
.get(SENPY_CLUB_API_URL)
.header("User-Agent", env!("GIT_COMMIT_HASH"))
.send()?
.status()
== 200,
)
}