diff options
Diffstat (limited to 'battleNetApi/src/hearthstoneApi.cpp')
| -rw-r--r-- | battleNetApi/src/hearthstoneApi.cpp | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/battleNetApi/src/hearthstoneApi.cpp b/battleNetApi/src/hearthstoneApi.cpp index 7290a5d..32c3164 100644 --- a/battleNetApi/src/hearthstoneApi.cpp +++ b/battleNetApi/src/hearthstoneApi.cpp @@ -4,14 +4,10 @@ #include <curl/easy.h> #include <curl/multi.h> #include <format> -#include <fstream> #include <iostream> -HearthstoneApi::HearthstoneApi(Token &&iToken) : mToken(iToken), mAuthorizationHeader(authorizationHeader()) {} -HearthstoneApi::HearthstoneApi(const Token &iToken) : mToken(iToken), mAuthorizationHeader(authorizationHeader()) {} - -std::string HearthstoneApi::authorizationHeader() const { - return std::format("Authorization: Bearer {}", mToken.text()); +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) { @@ -25,7 +21,7 @@ size_t HearthstoneApi::curlCallbackStringOutput(void *iContent, size_t iSize, si return kNewLength; } -json HearthstoneApi::makeApiRequest(const std::string &iUrl) const { +json HearthstoneApi::makeApiRequest(const std::string &iUrl, const std::string &iTokenText) { CURL *curl = curl_easy_init(); std::string aRequestOutput; if (curl) { @@ -35,7 +31,7 @@ json HearthstoneApi::makeApiRequest(const std::string &iUrl) const { curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curlCallbackStringOutput); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &aRequestOutput); struct curl_slist *chunk = nullptr; - chunk = curl_slist_append(chunk, mAuthorizationHeader.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); @@ -44,7 +40,7 @@ json HearthstoneApi::makeApiRequest(const std::string &iUrl) const { return aOutputJson; } -std::vector<json> HearthstoneApi::makeApiRequest(const std::vector<std::string> &iUrls) const { +std::vector<json> HearthstoneApi::makeApiRequest(const std::vector<std::string> &iUrls, const std::string &iTokenText) { std::vector<std::string> aResponses(iUrls.size()); CURLM *curlm = curl_multi_init(); if (curlm) { @@ -56,7 +52,7 @@ std::vector<json> HearthstoneApi::makeApiRequest(const std::vector<std::string> 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, mAuthorizationHeader.c_str()); + chunk = curl_slist_append(chunk, authorizationHeader(iTokenText).c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); curl_multi_add_handle(curlm, curl); } @@ -102,24 +98,22 @@ std::vector<json> HearthstoneApi::makeApiRequest(const std::vector<std::string> return aJsonOutputs; } -void HearthstoneApi::downloadAllCards(ApiUrl &iApiUrl, const std::string &iOutputJsonPath) const { - HearthstoneApi aHearthstoneApi(mToken); +json HearthstoneApi::downloadCards(ApiUrl &iApiUrl, Token &iToken) { iApiUrl.setPage("1"); std::vector<std::string> aRequests; - json aFirstPageJson = aHearthstoneApi.makeApiRequest(iApiUrl()); + json aFirstPageJson = makeApiRequest(iApiUrl(), iToken.text()); int kNumberOfPages{aFirstPageJson["pageCount"]}; for (int i{1}; i < kNumberOfPages; ++i) { iApiUrl.setPage(std::to_string(i + 1)); aRequests.push_back(iApiUrl()); } - json::reference &aMergedCards = aFirstPageJson["cards"]; - std::vector<json> kApiResponses = aHearthstoneApi.makeApiRequest(aRequests); + json::reference &aOutputJson = aFirstPageJson["cards"]; + std::vector<json> kApiResponses = makeApiRequest(aRequests, iToken.text()); for (json &aPage : kApiResponses) { for (json::reference &aCard : aPage["cards"]) { - aMergedCards.push_back(std::move(aCard)); + aOutputJson.push_back(std::move(aCard)); } } - std::ofstream aOutputJson(iOutputJsonPath); - aOutputJson << aMergedCards.dump(4); + return aOutputJson; } |
