From dec178a883769e221c8da3c125f83c6512b733e3 Mon Sep 17 00:00:00 2001 From: uku Date: Fri, 13 Oct 2023 18:31:21 +0200 Subject: move client & logic into api module --- src/api/guzzle.rs | 9 +-------- src/api/mod.rs | 10 ++++++++++ src/api/shiggy.rs | 29 +++++++++++++++++++++++++++++ src/commands/random_shiggy.rs | 31 ++----------------------------- 4 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 src/api/shiggy.rs (limited to 'src') diff --git a/src/api/guzzle.rs b/src/api/guzzle.rs index b58f323..a13243d 100644 --- a/src/api/guzzle.rs +++ b/src/api/guzzle.rs @@ -1,4 +1,4 @@ -use once_cell::sync::Lazy; +use crate::api::REQWEST_CLIENT; use reqwest::StatusCode; use serde::{Deserialize, Serialize}; @@ -9,13 +9,6 @@ struct GuzzleResponse { const GUZZLE: &str = "https://api.mydadleft.me"; -pub static REQWEST_CLIENT: Lazy = Lazy::new(|| { - reqwest::Client::builder() - .user_agent("teawieBot/0.1.0") - .build() - .unwrap_or_default() -}); - pub async fn get_random_teawie() -> String { let endpoint = "get_random_teawie"; let req = REQWEST_CLIENT diff --git a/src/api/mod.rs b/src/api/mod.rs index c2ad56f..6224ab1 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -1 +1,11 @@ +use once_cell::sync::Lazy; + pub mod guzzle; +pub mod shiggy; + +pub static REQWEST_CLIENT: Lazy = Lazy::new(|| { + reqwest::Client::builder() + .user_agent("teawieBot/0.1.0") + .build() + .unwrap_or_default() +}); diff --git a/src/api/shiggy.rs b/src/api/shiggy.rs new file mode 100644 index 0000000..0e9fd19 --- /dev/null +++ b/src/api/shiggy.rs @@ -0,0 +1,29 @@ +use crate::api::REQWEST_CLIENT; +use reqwest::StatusCode; +use serde::Deserialize; + +const URL: &str = "https://safebooru.donmai.us/posts/random.json?tags=kemomimi-chan_(naga_u)+naga_u&only=file_url"; +const ERROR_MSG: &str = "couldn't get a shiggy"; + +#[derive(Deserialize)] +struct SafebooruResponse { + file_url: String, +} + +pub async fn get_random_shiggy() -> String { + let resp = match REQWEST_CLIENT + .execute(REQWEST_CLIENT.get(URL).build().unwrap()) + .await + { + Ok(r) => r, + Err(e) => return format!("{} ({:?})", ERROR_MSG, e), + }; + + match resp.status() { + StatusCode::OK => match resp.json::().await { + Ok(sr) => sr.file_url, + Err(e) => format!("{} ({:?})", ERROR_MSG, e), + }, + other => format!("{} ({:?})", ERROR_MSG, other), + } +} diff --git a/src/commands/random_shiggy.rs b/src/commands/random_shiggy.rs index b1f1511..c6aa6de 100644 --- a/src/commands/random_shiggy.rs +++ b/src/commands/random_shiggy.rs @@ -1,36 +1,9 @@ -use crate::api::guzzle::REQWEST_CLIENT; -use reqwest::StatusCode; -use serde::Deserialize; +use crate::api::shiggy::get_random_shiggy; use serenity::builder::CreateApplicationCommand; use serenity::model::prelude::application_command::CommandDataOption; -const URL: &str = "https://safebooru.donmai.us/posts/random.json?tags=kemomimi-chan_(naga_u)+naga_u&only=file_url"; -const ERROR_MSG: &str = "couldn't get a shiggy"; - -#[derive(Deserialize)] -struct SafebooruResponse { - file_url: String, -} - pub async fn run(_: &[CommandDataOption]) -> String { - let resp = match REQWEST_CLIENT - .execute(REQWEST_CLIENT.get(URL).build().unwrap()) - .await - { - Ok(r) => r, - Err(e) => return format!("{} ({:?})", ERROR_MSG, e), - }; - - match resp.status() { - StatusCode::OK => match resp.json::().await { - Ok(sr) => sr.file_url, - Err(e) => format!("{} ({:?})", ERROR_MSG, e), - }, - other => { - println!("{}", resp.text().await.unwrap()); - format!("{} ({:?})", ERROR_MSG, other) - } - } + get_random_shiggy().await } pub fn register(command: &mut CreateApplicationCommand) -> &mut CreateApplicationCommand { -- cgit v1.2.3