summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--subprojects/battleNetApi/include/apiUrl.hpp9
-rw-r--r--subprojects/battleNetApi/include/token.hpp2
-rw-r--r--subprojects/battleNetApi/src/apiUrl.cpp14
-rw-r--r--subprojects/battleNetApi/src/token.cpp4
-rw-r--r--subprojects/battleNetApi/tests/tests.cpp4
5 files changed, 21 insertions, 12 deletions
diff --git a/subprojects/battleNetApi/include/apiUrl.hpp b/subprojects/battleNetApi/include/apiUrl.hpp
index cefce0b..12124c6 100644
--- a/subprojects/battleNetApi/include/apiUrl.hpp
+++ b/subprojects/battleNetApi/include/apiUrl.hpp
@@ -4,12 +4,15 @@
class ApiUrl {
public:
- ApiUrl(const std::string iContentType);
- void setLocale(const std::string iLocale);
- void setGameMode(const std::string iGameMode);
+ ApiUrl(const std::string &iContentType, const std::string &iRegion);
+
+ void setRegion(const std::string &iRegion);
+ void setLocale(const std::string &iLocale);
+ void setGameMode(const std::string &iGameMode);
std::string operator()();
private:
std::string mContentType;
+ std::string mRegion;
std::unordered_map<std::string, std::string> aParameters;
};
diff --git a/subprojects/battleNetApi/include/token.hpp b/subprojects/battleNetApi/include/token.hpp
index fc5e19a..def5dc2 100644
--- a/subprojects/battleNetApi/include/token.hpp
+++ b/subprojects/battleNetApi/include/token.hpp
@@ -18,7 +18,7 @@ class Token {
void writeTokenToFile(const std::string &iToken) const;
std::string getValidTokenWithApi() const;
std::chrono::seconds getCurrentTime() const;
- std::string extractFirstMatchRegex(const std::string &t_str, const std::string &t_regex) const;
+ std::string extractTokenWithRegex(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);
friend class TokenTests;
diff --git a/subprojects/battleNetApi/src/apiUrl.cpp b/subprojects/battleNetApi/src/apiUrl.cpp
index 89f7a5f..e08c8c7 100644
--- a/subprojects/battleNetApi/src/apiUrl.cpp
+++ b/subprojects/battleNetApi/src/apiUrl.cpp
@@ -1,11 +1,15 @@
#include "apiUrl.hpp"
#include <format>
-ApiUrl::ApiUrl(const std::string iContentType) : mContentType{iContentType} {}
-void ApiUrl::setLocale(const std::string iLocale) {
- aParameters["locale"] = iLocale; //<! fr_FR
+ApiUrl::ApiUrl(const std::string &iContentType, const std::string &iRegion)
+ : mContentType{iContentType}, mRegion{iRegion} {}
+void ApiUrl::setRegion(const std::string &iRegion) {
+ mRegion = iRegion; //<! eu
}
-void ApiUrl::setGameMode(const std::string iGameMode) {
+void ApiUrl::setLocale(const std::string &iLocale) {
+ aParameters["locale"] = iLocale; //<! fr_FR, ko_KR
+}
+void ApiUrl::setGameMode(const std::string &iGameMode) {
aParameters["gameMode"] = iGameMode; //<! constructed
}
std::string ApiUrl::operator()() {
@@ -17,6 +21,6 @@ std::string ApiUrl::operator()() {
aFormattedParameters[0] = '?';
}
aFormattedParameters =
- std::format("https://eu.api.blizzard.com/hearthstone/{}/{}", mContentType, aFormattedParameters);
+ std::format("https://{}.api.blizzard.com/hearthstone/{}/{}", mRegion, mContentType, aFormattedParameters);
return aFormattedParameters;
}
diff --git a/subprojects/battleNetApi/src/token.cpp b/subprojects/battleNetApi/src/token.cpp
index 6a3ef24..d3b3054 100644
--- a/subprojects/battleNetApi/src/token.cpp
+++ b/subprojects/battleNetApi/src/token.cpp
@@ -68,14 +68,14 @@ std::string Token::getValidTokenWithApi() const {
}
}
- return extractFirstMatchRegex(token_info, "\"access_token\":\"(\\w+)\"");
+ return extractTokenWithRegex(token_info, "\"access_token\":\"(\\w+)\"");
}
std::chrono::seconds Token::getCurrentTime() const {
return std::chrono::duration_cast<std::chrono::seconds>(std::chrono::utc_clock::now().time_since_epoch());
}
-std::string Token::extractFirstMatchRegex(const std::string &iText, const std::string &iRegex) const {
+std::string Token::extractTokenWithRegex(const std::string &iText, const std::string &iRegex) const {
std::regex regex(iRegex);
auto aMatchBegin = std::sregex_iterator(iText.begin(), iText.end(), regex);
auto aMatchEnd = std::sregex_iterator();
diff --git a/subprojects/battleNetApi/tests/tests.cpp b/subprojects/battleNetApi/tests/tests.cpp
index 6994d2f..368a767 100644
--- a/subprojects/battleNetApi/tests/tests.cpp
+++ b/subprojects/battleNetApi/tests/tests.cpp
@@ -45,7 +45,9 @@ TEST_CASE("Retrieve number of pages", "[getPagesCount]") {
TEST_CASE("Retrieve cards", "[retrieveCards]") {
HearthstoneApiMock aHearthstoneApi;
- ApiUrl aApiUrl("cards");
+ const std::string kContentType{"cards"};
+ const std::string kRegion{"eu"};
+ ApiUrl aApiUrl(kContentType, kRegion);
aApiUrl.setLocale("fr_FR");
aApiUrl.setGameMode("constructed");
std::cout << aHearthstoneApi.makeApiRequest(aApiUrl()) << '\n';