From 2b6f8588d8071cf73e50c03b1efb92b3f89f3be2 Mon Sep 17 00:00:00 2001 From: b1tflyyyy Date: Wed, 8 May 2024 06:24:41 -0400 Subject: [PATCH 1/2] added error handling --- .../controller/api/meme_api/meme_api_controller.cpp | 7 +++++-- .../controller/api/meme_api/meme_api_controller.hpp | 3 ++- source/view/handlers/message_handler/message_handler.cpp | 8 +++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/source/business_logic/controller/api/meme_api/meme_api_controller.cpp b/source/business_logic/controller/api/meme_api/meme_api_controller.cpp index 217ee33..e01ca23 100644 --- a/source/business_logic/controller/api/meme_api/meme_api_controller.cpp +++ b/source/business_logic/controller/api/meme_api/meme_api_controller.cpp @@ -41,11 +41,14 @@ AMeme_API_Controller::~AMeme_API_Controller() } // --------------------------------------------------------------------------------------------------------------------- -std::string AMeme_API_Controller::Get_Meme() +std::optional AMeme_API_Controller::Get_Meme() { if (Meme_Links_Stack.empty()) { - Send_Request("GET"); + if (!Send_Request("GET")) + { + return std::nullopt; + } for (std::size_t i{}; !Json_Response.empty() && i < 12; ++i) // 12 - default count of meme links { diff --git a/source/business_logic/controller/api/meme_api/meme_api_controller.hpp b/source/business_logic/controller/api/meme_api/meme_api_controller.hpp index e21a54c..d44f3cc 100644 --- a/source/business_logic/controller/api/meme_api/meme_api_controller.hpp +++ b/source/business_logic/controller/api/meme_api/meme_api_controller.hpp @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -38,7 +39,7 @@ class AMeme_API_Controller : public ABase_API_Controller explicit AMeme_API_Controller(const AMeme_API_Config& meme_api_config); ~AMeme_API_Controller() override; - std::string Get_Meme(); + std::optional Get_Meme(); private: bool Send_Request(std::string_view request_type); diff --git a/source/view/handlers/message_handler/message_handler.cpp b/source/view/handlers/message_handler/message_handler.cpp index 3ba2ffe..d4cacec 100644 --- a/source/view/handlers/message_handler/message_handler.cpp +++ b/source/view/handlers/message_handler/message_handler.cpp @@ -178,7 +178,13 @@ void AMessage_Handler::Bind_Commands() std::lock_guard locker(Mutex); ++Metrics.Meme_Request_Count; - TG_Bot.getApi().sendMessage(message->chat->id, Meme_API_Controller.Get_Meme()); + if (auto meme{ Meme_API_Controller.Get_Meme() }; meme != std::nullopt) + { + TG_Bot.getApi().sendMessage(message->chat->id, meme.value()); + return; + } + + TG_Bot.getApi().sendMessage(message->chat->id, AMessage_Reply::Get_Server_Internal_Error()); }); TG_Bot.getEvents().onCommand(SMessage_Commands::Metrics_Range.data(), [this](TgBot::Message::Ptr message) -> void { From e11743c19c854b43235cdb95db3b8cf3ee3f59ae Mon Sep 17 00:00:00 2001 From: b1tflyyyy Date: Wed, 8 May 2024 06:25:05 -0400 Subject: [PATCH 2/2] added server internal error info --- source/view/texts/message_reply/message_reply.cpp | 6 ++++++ source/view/texts/message_reply/message_reply.hpp | 1 + 2 files changed, 7 insertions(+) diff --git a/source/view/texts/message_reply/message_reply.cpp b/source/view/texts/message_reply/message_reply.cpp index 34ed3b6..3215e79 100644 --- a/source/view/texts/message_reply/message_reply.cpp +++ b/source/view/texts/message_reply/message_reply.cpp @@ -129,4 +129,10 @@ std::string AMessage_Reply::Get_Synonym_Msg(std::string_view primary_word, std:: std::string AMessage_Reply::Get_Not_Found_Synonym_Msg() { return std::string{ "Мені не вдалося знайти синонім до твого слова) " }; +} + +// --------------------------------------------------------------------------------------------------------------------- +std::string AMessage_Reply::Get_Server_Internal_Error() +{ + return std::string{ "Сталася помилка на стороні сервера!" }; } \ No newline at end of file diff --git a/source/view/texts/message_reply/message_reply.hpp b/source/view/texts/message_reply/message_reply.hpp index 23f94fe..84dd87b 100644 --- a/source/view/texts/message_reply/message_reply.hpp +++ b/source/view/texts/message_reply/message_reply.hpp @@ -59,4 +59,5 @@ class AMessage_Reply static std::string Get_Not_Found_Antonym_Msg(); static std::string Get_Synonym_Msg(std::string_view primary_word, std::string_view synonym); static std::string Get_Not_Found_Synonym_Msg(); + static std::string Get_Server_Internal_Error(); }; \ No newline at end of file