From 5582e994d39b16a6d61f05b13e78c30f4bac5d84 Mon Sep 17 00:00:00 2001 From: Aotrix <9aotrix@protonmail.com> Date: Thu, 23 Apr 2026 02:48:00 +0200 Subject: Create TokenBuilder class --- battleNetApi/src/hearthstoneApi.cpp | 42 +++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 13 deletions(-) (limited to 'battleNetApi/src/hearthstoneApi.cpp') diff --git a/battleNetApi/src/hearthstoneApi.cpp b/battleNetApi/src/hearthstoneApi.cpp index 133f38d..1341f74 100644 --- a/battleNetApi/src/hearthstoneApi.cpp +++ b/battleNetApi/src/hearthstoneApi.cpp @@ -10,7 +10,9 @@ std::string HearthstoneApi::authorizationHeader(const std::string &iTokenText) { return std::format("Authorization: Bearer {}", iTokenText); } -size_t HearthstoneApi::curlCallbackStringOutput(void *iContent, size_t iSize, size_t iNmemb, std::string *iS) { +size_t HearthstoneApi::curlCallbackStringOutput(void *iContent, size_t iSize, + size_t iNmemb, + std::string *iS) { const size_t kNewLength = iSize * iNmemb; try { iS->append(static_cast(iContent), kNewLength); @@ -21,7 +23,8 @@ size_t HearthstoneApi::curlCallbackStringOutput(void *iContent, size_t iSize, si return kNewLength; } -json HearthstoneApi::makeApiRequest(const ApiUrl &iApiUrl, const std::string &iTokenText) { +json HearthstoneApi::makeApiRequest(const ApiUrl &iApiUrl, + const std::string &iTokenText) { CURL *curl = curl_easy_init(); std::string aRequestOutput; if (curl) { @@ -31,7 +34,8 @@ json HearthstoneApi::makeApiRequest(const ApiUrl &iApiUrl, const std::string &iT curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curlCallbackStringOutput); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &aRequestOutput); struct curl_slist *chunk = nullptr; - chunk = curl_slist_append(chunk, authorizationHeader(iTokenText).c_str()); + chunk = + curl_slist_append(chunk, authorizationHeader(iTokenText).c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); curl_easy_perform(curl); curl_easy_cleanup(curl); @@ -40,25 +44,34 @@ json HearthstoneApi::makeApiRequest(const ApiUrl &iApiUrl, const std::string &iT return aOutputJson; } -std::vector HearthstoneApi::makeApiRequest(const std::vector &iApiUrls, const std::string &iTokenText) { +std::vector +HearthstoneApi::makeApiRequest(const std::vector &iApiUrls, + const std::string &iTokenText) { std::vector aApiUrls(iApiUrls.size()); - std::ranges::transform(iApiUrls, aApiUrls.begin(), [](const ApiUrl &iApiUrl) { return iApiUrl.text(); }); + std::ranges::transform( + iApiUrls, aApiUrls.begin(), + [](const ApiUrl &iApiUrl) { return iApiUrl.text(); }); return makeApiRequest(aApiUrls, iTokenText); } -std::vector HearthstoneApi::makeApiRequest(const std::vector &iUrls, const std::string &iTokenText) { +std::vector +HearthstoneApi::makeApiRequest(const std::vector &iUrls, + const std::string &iTokenText) { std::vector aResponses(iUrls.size()); CURLM *curlm = curl_multi_init(); if (curlm) { - for (std::vector::size_type i{0}; i < aResponses.size(); ++i) { + for (std::vector::size_type i{0}; i < aResponses.size(); + ++i) { CURL *curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, iUrls[i].c_str()); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curlCallbackStringOutput); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, + curlCallbackStringOutput); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &(aResponses[i])); struct curl_slist *chunk = nullptr; - chunk = curl_slist_append(chunk, authorizationHeader(iTokenText).c_str()); + chunk = curl_slist_append(chunk, + authorizationHeader(iTokenText).c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); curl_multi_add_handle(curlm, curl); } @@ -69,7 +82,8 @@ std::vector HearthstoneApi::makeApiRequest(const std::vector int numfds = 0; int res = curl_multi_wait(curlm, NULL, 0, kMaxWaitMs, &numfds); if (res != CURLM_OK) { - std::cerr << std::format("error: curl_multi_wait() returned {}\n", res); + std::cerr << std::format( + "error: curl_multi_wait() returned {}\n", res); } curl_multi_perform(curlm, &aStillRunning); } while (aStillRunning); @@ -84,15 +98,17 @@ std::vector HearthstoneApi::makeApiRequest(const std::vector aHandle = aMessage->easy_handle; aReturnCode = aMessage->data.result; if (aReturnCode != CURLE_OK) { - fprintf(stderr, "CURL error code: %d\n", aMessage->data.result); + fprintf(stderr, "CURL error code: %d\n", + aMessage->data.result); continue; } curl_multi_remove_handle(curlm, aHandle); curl_easy_cleanup(aHandle); aHandle = nullptr; } else { - std::cerr << std::format("error: after curl_multi_info_read(), CURLMsg={}\n", - static_cast(aMessage->msg)); + std::cerr << std::format( + "error: after curl_multi_info_read(), CURLMsg={}\n", + static_cast(aMessage->msg)); } } curl_multi_cleanup(curlm); -- cgit v1.2.3