diff --git a/src/bots/approved_bot/modules/search.rs b/src/bots/approved_bot/modules/search.rs index 12c20b6..868ea7b 100644 --- a/src/bots/approved_bot/modules/search.rs +++ b/src/bots/approved_bot/modules/search.rs @@ -124,15 +124,12 @@ where (Some(chat_id), Some(query), Some(message_id)) => { (chat_id, query, message_id) } + (Some(chat_id), _, _) => { + bot.send_message(chat_id, "Повторите поиск сначала").send().await?; + return Ok(()); + } _ => { - return match chat_id { - Some(v) => match bot.send_message(v, "Повторите поиск сначала").send().await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - }, - None => return Ok(()), - } + return Ok(()); } }; @@ -148,14 +145,11 @@ where let mut items_page = match items_getter(query.clone(), page, allowed_langs.clone()).await { Ok(v) => v, Err(err) => { - match bot + bot .send_message(chat_id, "Ошибка! Попробуйте позже :(") .send() - .await - { - Ok(_) => (), - Err(err) => log::error!("{:?}", err), - } + .await?; + return Err(err); } }; @@ -168,10 +162,8 @@ where SearchCallbackData::Translators { .. } => "Переводчики не найдены!", }; - return match bot.send_message(chat_id, message_text).send().await { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - }; + bot.send_message(chat_id, message_text).send().await?; + return Ok(()); }; if page > items_page.total_pages { @@ -184,14 +176,11 @@ where { Ok(v) => v, Err(err) => { - match bot + bot .send_message(chat_id, "Ошибка! Попробуйте позже :(") .send() - .await - { - Ok(_) => (), - Err(err) => log::error!("{:?}", err), - } + .await?; + return Err(err); } }; @@ -206,15 +195,13 @@ where let keyboard = generic_get_pagination_keyboard(page, total_pages, search_data, true); - match bot + bot .edit_message_text(chat_id, message_id, message_text) .reply_markup(keyboard) .send() - .await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - } + .await?; + + Ok(()) } pub async fn message_handler(message: Message, bot: CacheMe>) -> BotHandlerInternal { @@ -249,16 +236,14 @@ pub async fn message_handler(message: Message, bot: CacheMe>) -> B ], }; - match bot + bot .send_message(message.chat.id, message_text) .reply_to_message_id(message.id) .reply_markup(keyboard) .send() - .await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - } + .await?; + + Ok(()) } pub fn get_search_handler() -> crate::bots::BotHandler { diff --git a/src/bots/approved_bot/modules/settings.rs b/src/bots/approved_bot/modules/settings.rs index 328c51b..b2b30d9 100644 --- a/src/bots/approved_bot/modules/settings.rs +++ b/src/bots/approved_bot/modules/settings.rs @@ -77,15 +77,13 @@ async fn settings_handler(message: Message, bot: CacheMe>) -> BotH }]], }; - match bot + bot .send_message(message.chat.id, "Настройки") .reply_markup(keyboard) .send() - .await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - } + .await?; + + Ok(()) } fn get_lang_keyboard(all_langs: Vec, allowed_langs: HashSet) -> InlineKeyboardMarkup { @@ -124,10 +122,8 @@ async fn settings_callback_handler( let message = match cq.message { Some(v) => v, None => { - #[allow(unused_must_use)] { - bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await; - } - return Ok(()) + bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await?; + return Ok(()); }, }; @@ -151,19 +147,17 @@ async fn settings_callback_handler( }; if allowed_langs_set.is_empty() { - return match bot + bot .answer_callback_query(cq.id) .text("Должен быть активен, хотя бы один язык!") .show_alert(true) .send() - .await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - }; + .await?; + + return Ok(()) } - match create_or_update_user_settings( + if let Err(err) = create_or_update_user_settings( user.id, user.last_name.clone().unwrap_or("".to_string()), user.first_name.clone(), @@ -171,38 +165,28 @@ async fn settings_callback_handler( me.username.clone().unwrap(), allowed_langs_set.clone().into_iter().collect(), ) - .await - { - Ok(_) => (), - Err(err) => { - #[allow(unused_must_use)] { - bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await; - } - return Err(err) - }, - }; + .await { + bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await?; + return Err(err); + } let all_langs = match get_langs().await { Ok(v) => v, Err(err) => { - #[allow(unused_must_use)] { - bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await; - } + bot.send_message(user.id, "Ошибка! Попробуйте заново(").send().await?; return Err(err) }, }; let keyboard = get_lang_keyboard(all_langs, allowed_langs_set); - match bot + bot .edit_message_reply_markup(message.chat.id, message.id) .reply_markup(keyboard) .send() - .await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - } + .await?; + + Ok(()) } pub fn get_settings_handler() -> crate::bots::BotHandler { diff --git a/src/bots/approved_bot/modules/support.rs b/src/bots/approved_bot/modules/support.rs index d7d0a0b..31df871 100644 --- a/src/bots/approved_bot/modules/support.rs +++ b/src/bots/approved_bot/modules/support.rs @@ -28,15 +28,13 @@ pub async fn support_command_handler(message: Message, bot: CacheMe Ok(()), - Err(err) => Err(Box::new(err)), - } + .await?; + + Ok(()) } pub fn get_support_handler() -> crate::bots::BotHandler { diff --git a/src/bots/approved_bot/modules/update_history.rs b/src/bots/approved_bot/modules/update_history.rs index ee3959a..a1ee1fa 100644 --- a/src/bots/approved_bot/modules/update_history.rs +++ b/src/bots/approved_bot/modules/update_history.rs @@ -140,10 +140,7 @@ async fn update_log_pagination_handler( let message = match cq.message { Some(v) => v, None => { - #[allow(unused_must_use)] { - bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await; - } - + bot.send_message(cq.from.id, "Ошибка! Попробуйте заново(").send().await?; return Ok(()) }, }; @@ -153,39 +150,27 @@ async fn update_log_pagination_handler( let header = format!("Обновление каталога ({from} - {to}):\n\n"); - let mut items_page = match get_uploaded_books( + let mut items_page = get_uploaded_books( update_callback_data.page, update_callback_data.from.format("%Y-%m-%d").to_string(), update_callback_data.to.format("%Y-%m-%d").to_string(), ) - .await - { - Ok(v) => v, - Err(err) => return Err(err), - }; + .await?; if items_page.total_pages == 0 { - return match bot + bot .send_message(message.chat.id, "Нет новых книг за этот период.") .send() - .await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - }; + .await?; + return Ok(()); } if update_callback_data.page > items_page.total_pages { - items_page = match get_uploaded_books( + items_page = get_uploaded_books( items_page.total_pages, update_callback_data.from.format("%Y-%m-%d").to_string(), update_callback_data.to.format("%Y-%m-%d").to_string(), - ) - .await - { - Ok(v) => v, - Err(err) => return Err(err), - }; + ).await?; } let formated_items = items_page.format_items(); @@ -197,15 +182,13 @@ async fn update_log_pagination_handler( let message_text = format!("{header}{formated_items}{footer}"); let keyboard = generic_get_pagination_keyboard(page, total_pages, update_callback_data, true); - match bot + bot .edit_message_text(message.chat.id, message.id, message_text) .reply_markup(keyboard) .send() - .await - { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - } + .await?; + + Ok(()) } pub fn get_update_log_handler() -> crate::bots::BotHandler { diff --git a/src/bots/approved_bot/services/book_cache/mod.rs b/src/bots/approved_bot/services/book_cache/mod.rs index c0d1066..5ad13fa 100644 --- a/src/bots/approved_bot/services/book_cache/mod.rs +++ b/src/bots/approved_bot/services/book_cache/mod.rs @@ -33,17 +33,8 @@ pub async fn get_cached_message( )) .header("Authorization", &config::CONFIG.cache_server_api_key) .send() - .await; - - let response = match response { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - let response = match response.error_for_status() { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; + .await? + .error_for_status()?; if response.status() != StatusCode::OK { return Err(Box::new(DownloadError { @@ -51,10 +42,7 @@ pub async fn get_cached_message( })); }; - match response.json::().await { - Ok(v) => Ok(v), - Err(err) => Err(Box::new(err)), - } + Ok(response.json::().await?) } pub async fn download_file( @@ -62,25 +50,15 @@ pub async fn download_file( ) -> Result> { let DownloadData { format, id } = download_data; - let client = reqwest::Client::new(); - let response = client + let response = reqwest::Client::new() .get(format!( "{}/api/v1/download/{id}/{format}", &config::CONFIG.cache_server_url )) .header("Authorization", &config::CONFIG.cache_server_api_key) .send() - .await; - - let response = match response { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - let response = match response.error_for_status() { - Ok(response) => response, - Err(err) => return Err(Box::new(err)), - }; + .await? + .error_for_status()?; if response.status() != StatusCode::OK { return Err(Box::new(DownloadError { @@ -90,8 +68,6 @@ pub async fn download_file( let headers = response.headers(); - log::info!("{:?}", headers); - let filename = std::str::from_utf8(&base64::decode(headers.get("x-filename-b64").unwrap()).unwrap()) .unwrap() diff --git a/src/bots/approved_bot/services/book_library/mod.rs b/src/bots/approved_bot/services/book_library/mod.rs index 4666d40..5c8affd 100644 --- a/src/bots/approved_bot/services/book_library/mod.rs +++ b/src/bots/approved_bot/services/book_library/mod.rs @@ -19,28 +19,15 @@ async fn _make_request( where T: DeserializeOwned, { - let client = reqwest::Client::new(); - let response = client + let response = reqwest::Client::new() .get(format!("{}{}", &config::CONFIG.book_server_url, url)) .query(¶ms) .header("Authorization", &config::CONFIG.book_server_api_key) .send() - .await; + .await? + .error_for_status()?; - let response = match response { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - let response = match response.error_for_status() { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - match response.json::().await { - Ok(v) => Ok(v), - Err(err) => Err(Box::new(err)), - } + Ok(response.json::().await?) } pub async fn get_random_book_by_genre( diff --git a/src/bots/approved_bot/services/user_settings/mod.rs b/src/bots/approved_bot/services/user_settings/mod.rs index 0817b28..1f9a2ec 100644 --- a/src/bots/approved_bot/services/user_settings/mod.rs +++ b/src/bots/approved_bot/services/user_settings/mod.rs @@ -24,8 +24,7 @@ pub struct UserSettings { pub async fn get_user_settings( user_id: UserId, ) -> Result> { - let client = reqwest::Client::new(); - let response = client + let response = reqwest::Client::new() .get(format!( "{}/users/{}", &config::CONFIG.user_settings_url, @@ -33,22 +32,10 @@ pub async fn get_user_settings( )) .header("Authorization", &config::CONFIG.user_settings_api_key) .send() - .await; + .await? + .error_for_status()?; - let response = match response { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - let response = match response.error_for_status() { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - match response.json::().await { - Ok(v) => Ok(v), - Err(err) => Err(Box::new(err)), - } + Ok(response.json::().await?) } pub async fn get_user_or_default_lang_codes(user_id: UserId) -> Vec { @@ -77,71 +64,37 @@ pub async fn create_or_update_user_settings( "allowed_langs": allowed_langs }); - let client = reqwest::Client::new(); - let response = client + let response = reqwest::Client::new() .post(format!("{}/users/", &config::CONFIG.user_settings_url)) .body(body.to_string()) .header("Authorization", &config::CONFIG.user_settings_api_key) .send() - .await; + .await? + .error_for_status()?; - let response = match response { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - let response = match response.error_for_status() { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - match response.json::().await { - Ok(v) => Ok(v), - Err(err) => Err(Box::new(err)), - } + Ok(response.json::().await?) } pub async fn get_langs() -> Result, Box> { - let client = reqwest::Client::new(); - let response = client + let response = reqwest::Client::new() .get(format!("{}/languages/", &config::CONFIG.user_settings_url)) .header("Authorization", &config::CONFIG.user_settings_api_key) .send() - .await; + .await? + .error_for_status()?; - let response = match response { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - let response = match response.error_for_status() { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - match response.json::>().await { - Ok(v) => Ok(v), - Err(err) => Err(Box::new(err)), - } + Ok(response.json::>().await?) } pub async fn update_user_activity( user_id: UserId, ) -> Result<(), Box> { - let client = reqwest::Client::new(); - let response = client + reqwest::Client::new() .post(format!("{}/users/{user_id}/update_activity", &config::CONFIG.user_settings_url)) .header("Authorization", &config::CONFIG.user_settings_api_key) .send() - .await; + .await? + .error_for_status()?; - let response = match response { - Ok(v) => v, - Err(err) => return Err(Box::new(err)), - }; - - match response.error_for_status() { - Ok(_) => Ok(()), - Err(err) => Err(Box::new(err)), - } + Ok(()) } diff --git a/src/bots/bots_manager/mod.rs b/src/bots/bots_manager/mod.rs index be2a44b..cbbed8c 100644 --- a/src/bots/bots_manager/mod.rs +++ b/src/bots/bots_manager/mod.rs @@ -23,12 +23,10 @@ pub async fn message_handler( register::RegisterStatus::RegisterFail => strings::ALREADY_REGISTERED.to_string(), }; - #[allow(unused_must_use)] - { - bot.send_message(message.chat.id, message_text) - .reply_to_message_id(message.id) - .await; - } + + bot.send_message(message.chat.id, message_text) + .reply_to_message_id(message.id) + .await?; Ok(()) } diff --git a/src/bots/bots_manager/register.rs b/src/bots/bots_manager/register.rs index ce216e0..c24b8e3 100644 --- a/src/bots/bots_manager/register.rs +++ b/src/bots/bots_manager/register.rs @@ -1,3 +1,5 @@ +use std::error::Error; + use std::collections::HashMap; use teloxide::prelude::*; @@ -20,7 +22,7 @@ async fn get_bot_username(token: &str) -> Option { } } -async fn make_register_request(user_id: UserId, username: &str, token: &str) -> Result<(), ()> { +async fn make_register_request(user_id: UserId, username: &str, token: &str) -> Result<(), Box> { let user_id = &user_id.to_string(); let data = HashMap::from([ @@ -31,24 +33,12 @@ async fn make_register_request(user_id: UserId, username: &str, token: &str) -> ("cache", "no_cache") ]); - let client = reqwest::Client::new(); - let response = client + reqwest::Client::new() .post(config::CONFIG.manager_url.clone()) .header("Authorization", config::CONFIG.manager_api_key.clone()) .json(&data) .send() - .await; - - let status_code = match response { - Ok(v) => v.status(), - Err(_) => return Err(()), - }; - - log::debug!("make_register_request status_code={}", status_code); - - if status_code != 200 { - return Err(()); - } + .await?; Ok(()) }