From 5fef66994abbc501025328582c02708bddccea77 Mon Sep 17 00:00:00 2001 From: Aotrix <9aotrix@protonmail.com> Date: Sun, 2 Nov 2025 13:35:17 +0100 Subject: refacto... but there is a segfault --- subprojects/battleNetApi/include/token.hpp | 6 ++++-- subprojects/battleNetApi/src/hearthstoneApi.cpp | 4 +++- subprojects/battleNetApi/src/token.cpp | 11 +++++------ subprojects/battleNetApi/tests/tests.cpp | 4 ++-- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/subprojects/battleNetApi/include/token.hpp b/subprojects/battleNetApi/include/token.hpp index 0b66f53..e1544e8 100644 --- a/subprojects/battleNetApi/include/token.hpp +++ b/subprojects/battleNetApi/include/token.hpp @@ -3,18 +3,20 @@ class Token { public: - Token(const std::string &iTokenFilePath); + Token(const std::string &iTokenFilePath, const std::string &iUsername, const std::string &iPassword); std::string toString() const; private: const std::string mFilePath; //!< Path to the token file const std::string mToken; //!< Token value + const std::string mUsername; //!< Username for Battle.net API + const std::string mPassword; //!< Password for Battle.net API std::string getValidToken() const; void refreshToken() const; void writeNewTokenToFile() const; void writeTokenToFile(const std::string &iToken) const; - std::string getValidTokenWithApi(const std::string &iUser, const std::string &iPassword) const; + std::string getValidTokenWithApi() const; std::chrono::seconds getCurrentTime() const; std::string extractFirstMatchRegex(const std::string &t_str, const std::string &t_regex) const; static size_t curlCallbackStringOutput(void *t_contents, size_t t_size, size_t t_nmemb, std::string *t_s); diff --git a/subprojects/battleNetApi/src/hearthstoneApi.cpp b/subprojects/battleNetApi/src/hearthstoneApi.cpp index d5b9aad..fb7c760 100644 --- a/subprojects/battleNetApi/src/hearthstoneApi.cpp +++ b/subprojects/battleNetApi/src/hearthstoneApi.cpp @@ -3,7 +3,9 @@ #include HearthstoneApi::HearthstoneApi() - : mToken(std::format("{}/resources/token_info.txt", SOURCE_DIR_PATH)), m_header(generateRequestHeader()) {} + : mToken(std::format("{}/resources/token_info.txt", SOURCE_DIR_PATH), "2b50f1123b424d5e9c21971a110fdd04", + "MrMkhVMNdOeqPL4Q4XVQAsRPR14J7Yq6"), + m_header(generateRequestHeader()) {} std::string HearthstoneApi::generateRequestHeader() { return std::format("Authorization: Bearer {}", mToken.toString()); diff --git a/subprojects/battleNetApi/src/token.cpp b/subprojects/battleNetApi/src/token.cpp index 056d80f..4e34490 100644 --- a/subprojects/battleNetApi/src/token.cpp +++ b/subprojects/battleNetApi/src/token.cpp @@ -6,7 +6,8 @@ #include #include -Token::Token(const std::string &iTokenFilePath) : mFilePath{iTokenFilePath}, mToken{getValidToken()} {} +Token::Token(const std::string &iTokenFilePath, const std::string &iUsername, const std::string &iPassword) + : mFilePath{iTokenFilePath}, mToken{getValidToken()}, mUsername{iUsername}, mPassword{iPassword} {} std::string Token::toString() const { return mToken; } @@ -35,9 +36,7 @@ void Token::refreshToken() const { } void Token::writeNewTokenToFile() const { - const std::string kUser{"2b50f1123b424d5e9c21971a110fdd04"}; - const std::string kPassword{"MrMkhVMNdOeqPL4Q4XVQAsRPR14J7Yq6"}; - std::string aToken{getValidTokenWithApi(kUser, kPassword)}; + std::string aToken{getValidTokenWithApi()}; if (not aToken.empty()) { writeTokenToFile(aToken); } @@ -49,7 +48,7 @@ void Token::writeTokenToFile(const std::string &iToken) const { token_file << iToken << " " << expires_at.count() << '\n'; } -std::string Token::getValidTokenWithApi(const std::string &iUser, const std::string &iPassword) const { +std::string Token::getValidTokenWithApi() const { CURL *curl = curl_easy_init(); std::string token_info; if (curl) { @@ -58,7 +57,7 @@ std::string Token::getValidTokenWithApi(const std::string &iUser, const std::str curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curlCallbackStringOutput); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &token_info); - curl_easy_setopt(curl, CURLOPT_USERPWD, std::format("{}:{}", iUser, iPassword).data()); + curl_easy_setopt(curl, CURLOPT_USERPWD, std::format("{}:{}", mUsername, mPassword).data()); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); CURLcode result_code; result_code = curl_easy_perform(curl); diff --git a/subprojects/battleNetApi/tests/tests.cpp b/subprojects/battleNetApi/tests/tests.cpp index f964ee4..0df1e21 100644 --- a/subprojects/battleNetApi/tests/tests.cpp +++ b/subprojects/battleNetApi/tests/tests.cpp @@ -6,7 +6,7 @@ class TokenTests { public: std::string toString() const { const std::string aTokenFilePath{"resources/token_info"}; - const Token aToken(aTokenFilePath); + const Token aToken(aTokenFilePath, "2b50f1123b424d5e9c21971a110fdd04", "MrMkhVMNdOeqPL4Q4XVQAsRPR14J7Yq6"); return aToken.toString(); } }; @@ -15,5 +15,5 @@ TEST_CASE("API Token retrieval", "[getApiToken]") { TokenTests aToken; const std::string kToken{aToken.toString()}; std::cout << kToken << '\n'; - REQUIRE(kToken == ""); + REQUIRE(not kToken.empty()); } -- cgit v1.2.3