summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAotrix <[email protected]>2025-11-02 13:35:17 +0100
committerAotrix <[email protected]>2025-11-02 13:35:17 +0100
commit5fef66994abbc501025328582c02708bddccea77 (patch)
tree7b28b787b4db50f87c3a6590641e19e10fe91377
parenta3b225f2b08172ab3639a4614033396dcae5d764 (diff)
refacto... but there is a segfault
-rw-r--r--subprojects/battleNetApi/include/token.hpp6
-rw-r--r--subprojects/battleNetApi/src/hearthstoneApi.cpp4
-rw-r--r--subprojects/battleNetApi/src/token.cpp11
-rw-r--r--subprojects/battleNetApi/tests/tests.cpp4
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 <format>
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 <iostream>
#include <regex>
-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());
}