summaryrefslogtreecommitdiff
path: root/battleNetApi/src/hearthstoneApi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'battleNetApi/src/hearthstoneApi.cpp')
-rw-r--r--battleNetApi/src/hearthstoneApi.cpp30
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;
}