From 3d07413690c551d9f034c93af85ae8da5a495e14 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 20 Apr 2024 02:31:40 +0000 Subject: spring cleaning (#165) * treewide: lightly refactor everything * once_cell -> std::sync * remove build.rs we can get our target at runtime * commands::copypasta: refactor selection * drop owo_colors * reactboard: always remove author from count * commands: better handle behavior outside of guilds * ci: garnix -> gha * nix: drop flake-parts & pre-commit-hooks * nix: fix rust flags in derivation * add gha badge to readme * ci: fail when format changes are made * ci: only run on push to main * nix: fix nil script * nix: add libiconv to darwin deps * ci: disable fail-fast * nix: fix actionlint & static checks * ci: add release gates * nix: fix nil check again * ci: give release gates unique names * ci: only build static packages in docker workflow * nix: move dev outputs to subflake * fix some typos * nix: cleanup checks & dev shell * add editorconfig --- src/api/mod.rs | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'src/api/mod.rs') diff --git a/src/api/mod.rs b/src/api/mod.rs index 6554553..dac9209 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -1,17 +1,29 @@ -use once_cell::sync::Lazy; +use std::sync::OnceLock; + +use eyre::Result; +use reqwest::Client; +use serde::de::DeserializeOwned; pub mod guzzle; pub mod shiggy; -pub static USER_AGENT: Lazy = Lazy::new(|| { - let version = option_env!("CARGO_PKG_VERSION").unwrap_or("development"); +pub fn client() -> &'static Client { + static USER_AGENT: OnceLock = OnceLock::new(); + static CLIENT: OnceLock = OnceLock::new(); + + let user_agent = USER_AGENT.get_or_init(|| { + let version = option_env!("CARGO_PKG_VERSION").unwrap_or("development"); + + format!("teawieBot/{version}") + }); + + CLIENT.get_or_init(|| Client::builder().user_agent(user_agent).build().unwrap()) +} - format!("teawieBot/{version}") -}); +async fn get_json(url: &str) -> Result { + let resp = client().get(url).send().await?; + resp.error_for_status_ref()?; + let json = resp.json().await?; -pub static REQWEST_CLIENT: Lazy = Lazy::new(|| { - reqwest::Client::builder() - .user_agent(USER_AGENT.to_string()) - .build() - .unwrap_or_default() -}); + Ok(json) +} -- cgit v1.2.3