diff --git a/modules/bot/CMakeLists.txt b/modules/bot/CMakeLists.txt index b6254c1..7a8948d 100644 --- a/modules/bot/CMakeLists.txt +++ b/modules/bot/CMakeLists.txt @@ -11,9 +11,6 @@ list(APPEND SOURCES ${SRC_BACK}) file(GLOB_RECURSE SRC_API "generated-client/src/*.cpp") list(APPEND SOURCES ${SRC_API}) -file(GLOB_RECURSE SRC_AUTH "generated-client-auth/src/*.cpp") -list(APPEND SOURCES ${SRC_AUTH}) - set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") @@ -29,7 +26,6 @@ include_directories(/usr/local/include ${OPENSSL_INCLUDE_DIR} ${Boost_INCLUDE_DI include_directories(front/include/) include_directories(back/include) include_directories(generated-client/include) -include_directories(generated-client-auth/include) if (CURL_FOUND) include_directories(${CURL_INCLUDE_DIRS}) add_definitions(-DHAVE_CURL) diff --git a/modules/bot/back/include/AuthImpersonation.hpp b/modules/bot/back/include/AuthImpersonation.hpp deleted file mode 100644 index 67d25fe..0000000 --- a/modules/bot/back/include/AuthImpersonation.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// AuthImpersonationClient.hpp - -#pragma once - -#include -#include -#include -#include -#include -#include -#include "AuthClient/ApiClient.h" -#include "AuthClient/ApiConfiguration.h" -#include "AuthClient/api/AuthApi.h" -#include "AuthClient/model/GetImpersonationToken_request.h" -#include "AuthClient/model/GetImpersonationToken_200_response.h" - - -namespace nyanimed { - -class AuthImpersonationClient { -public: - AuthImpersonationClient(); - - // Потокобезопасный вызов — не модифицирует состояние - pplx::task> - getImpersonationToken(int64_t userId) const; - -private: - std::string m_baseUrl; - std::string m_authToken; - std::shared_ptr m_apiClient; - std::shared_ptr m_authApi; -}; - -} // namespace nyanimed \ No newline at end of file diff --git a/modules/bot/back/include/BotToServer.hpp b/modules/bot/back/include/BotToServer.hpp index d4b132b..7f10fb6 100644 --- a/modules/bot/back/include/BotToServer.hpp +++ b/modules/bot/back/include/BotToServer.hpp @@ -15,8 +15,6 @@ #include #include -#include "AuthImpersonation.hpp" - using namespace org::openapitools::client::api; class BotToServer { @@ -30,6 +28,4 @@ private: std::shared_ptr apiconfiguration; std::shared_ptr apiclient; std::shared_ptr api; - - nyanimed::AuthImpersonationClient authClient; }; \ No newline at end of file diff --git a/modules/bot/back/src/AuthImpersonation.cpp b/modules/bot/back/src/AuthImpersonation.cpp deleted file mode 100644 index f111922..0000000 --- a/modules/bot/back/src/AuthImpersonation.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "AuthImpersonation.hpp" - -nyanimed::AuthImpersonationClient::AuthImpersonationClient() { - const char* baseUrlEnv = std::getenv("NYANIMEDBAUTHURL"); - const char* tokenEnv = std::getenv("NYANIMEDBAUTHTOKEN"); - - if (!baseUrlEnv || std::string(baseUrlEnv).empty()) { - throw std::runtime_error("Missing required environment variable: NYANIMEDBAUTHURL"); - } - if (!tokenEnv || std::string(tokenEnv).empty()) { - throw std::runtime_error("Missing required environment variable: NYANIMEDBAUTHTOKEN"); - } - - m_baseUrl = baseUrlEnv; - m_authToken = tokenEnv; - - auto config = std::make_shared(); - config->setBaseUrl(utility::conversions::to_string_t(m_baseUrl)); - - m_apiClient = std::make_shared(config); - m_authApi = std::make_shared(m_apiClient); -} - -pplx::task> -nyanimed::AuthImpersonationClient::getImpersonationToken(int64_t userId) const { - auto request = std::make_shared(); - request->setUserId(userId); - //request->setExternalId(externalId); - - std::map headers; - headers[U("Authorization")] = U("Bearer ") + utility::conversions::to_string_t(m_authToken); - - return m_authApi->getImpersonationToken(request, headers); -} \ No newline at end of file diff --git a/modules/bot/back/src/BotToServer.cpp b/modules/bot/back/src/BotToServer.cpp index e9d33ff..8897ac4 100644 --- a/modules/bot/back/src/BotToServer.cpp +++ b/modules/bot/back/src/BotToServer.cpp @@ -45,52 +45,28 @@ static BotStructs::Title mapUserTitleToBotTitle( } pplx::task> BotToServer::fetchUserTitlesAsync(const std::string& userId) { - // Шаг 1: Получаем impersonation-токен - auto impersonationTask = authClient.getImpersonationToken(std::stoi(userId)); + utility::string_t userIdW = utility::conversions::to_string_t(userId); + int32_t limit = static_cast(BotConstants::DISP_TITLES_NUM); - // Шаг 2: После получения токена — делаем запрос getUserTitles с этим токеном - return impersonationTask.then([=](pplx::task> tokenTask) { + auto responseTask = api->getUserTitles( + userIdW, + boost::none, // cursor + boost::none, // sort + boost::none, // sortForward + boost::none, // word + boost::none, // status + boost::none, // watchStatus + boost::none, // rating + boost::none, // myRate + boost::none, // releaseYear + boost::none, // releaseSeason + limit, + boost::none // fields + ); + + return responseTask.then([=](pplx::task> task) { try { - auto tokenResponse = tokenTask.get(); - if (!tokenResponse) { - throw std::runtime_error("Null response from getImpersonationToken"); - } - - utility::string_t accessToken = utility::conversions::to_string_t(tokenResponse->getAccessToken()); - - // Формируем заголовки с токеном - std::map customHeaders; - customHeaders[U("Cookie")] = U("access_token=") + accessToken; - - // Подготавливаем параметры запроса - utility::string_t userIdW = utility::conversions::to_string_t(userId); - int32_t limit = static_cast(BotConstants::DISP_TITLES_NUM); - - // Шаг 3: Выполняем getUserTitles с кастомными заголовками - return api->getUserTitles( - userIdW, - boost::none, // cursor - boost::none, // sort - boost::none, // sortForward - boost::none, // word - boost::none, // status - boost::none, // watchStatus - boost::none, // rating - boost::none, // myRate - boost::none, // releaseYear - boost::none, // releaseSeason - limit, - boost::none, // fields - customHeaders - ); - - } catch (const std::exception& e) { - std::cerr << "Error obtaining impersonation token: " << e.what() << std::endl; - throw; // Пробрасываем, чтобы цепочка task.then завершилась с ошибкой - } - }).then([=](pplx::task> responseTask) { - try { - auto response = responseTask.get(); + auto response = task.get(); if (!response) { throw std::runtime_error("Null response from getUserTitles"); } diff --git a/modules/bot/front/src/KeyboardFactory.cpp b/modules/bot/front/src/KeyboardFactory.cpp index d7a9d47..b8bbd06 100644 --- a/modules/bot/front/src/KeyboardFactory.cpp +++ b/modules/bot/front/src/KeyboardFactory.cpp @@ -35,10 +35,6 @@ TgBot::InlineKeyboardMarkup::Ptr KeyboardFactory::createMyTitles(std::vectorcallbackData = BotConstants::Callback::LIST_PREV + ':' + std::to_string(titles[0].num); } - layout.back().push_back(button); + layout[counter / 2].push_back(button); } else { auto button_prev = std::make_shared(); diff --git a/modules/bot/front/src/handleNavigation.cpp b/modules/bot/front/src/handleNavigation.cpp index ded36b1..b8af2ef 100644 --- a/modules/bot/front/src/handleNavigation.cpp +++ b/modules/bot/front/src/handleNavigation.cpp @@ -78,7 +78,7 @@ void BotHandlers::renderCurrent(TgBot::CallbackQuery::Ptr query) { editMessage(chatId, messageId, showMainMenu()); return; case UserState::VIEWING_MY_TITLES: - server_.fetchUserTitlesAsync(std::to_string(22)) // ALARM: тестовое значение вместо userId + server_.fetchUserTitlesAsync(std::to_string(2)) // ALARM: тестовое значение вместо userId .then([this, chatId, messageId](pplx::task> t) { try { auto titles = t.get();