summaryrefslogtreecommitdiff
path: root/submodules/battleNetApi/src/apiUrl.cpp
diff options
context:
space:
mode:
authorAotrix <[email protected]>2025-11-17 13:30:23 +0100
committerAotrix <[email protected]>2025-11-17 13:30:23 +0100
commit9dab564d3aaabda88efda5e3289392d0be716084 (patch)
tree4d2d0188119ba33f29c0dc6c362c26a47a9e637d /submodules/battleNetApi/src/apiUrl.cpp
parentf78e3e1428f59fb96cb02cf6fbaad692a582f9d5 (diff)
changed subprojects to submodules
Diffstat (limited to 'submodules/battleNetApi/src/apiUrl.cpp')
-rw-r--r--submodules/battleNetApi/src/apiUrl.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/submodules/battleNetApi/src/apiUrl.cpp b/submodules/battleNetApi/src/apiUrl.cpp
new file mode 100644
index 0000000..3de13cd
--- /dev/null
+++ b/submodules/battleNetApi/src/apiUrl.cpp
@@ -0,0 +1,40 @@
+#include "apiUrl.hpp"
+#include <format>
+
+ApiUrl::ApiUrl(const std::string &iContentType, const std::string &iRegion)
+ : mContentType{iContentType}, mRegion{iRegion} {}
+void ApiUrl::setRegion(const std::string &iRegion) {
+ if (not iRegion.empty()) {
+ mRegion = iRegion; //!< The region of the data to receive, e.g. "eu"
+ }
+}
+void ApiUrl::setLocale(const std::string &iLocale) {
+ if (not iLocale.empty()) {
+ aParameters["locale"] = iLocale; //!< The locale to reflect in localized data, e.g. "fr_FR" or "ko_KR"
+ //!< If you do not supply a value, all translations are returned.
+ }
+}
+void ApiUrl::setGameMode(const std::string &iGameMode) {
+ if (not iGameMode.empty()) {
+ aParameters["gameMode"] =
+ iGameMode; //!< A recognized game mode, e.g. "constructed"
+ //!< @see https://community.developer.battle.net/documentation/hearthstone/guides/game-modes
+ }
+}
+void ApiUrl::setPageSize(const std::string &iPageSize) {
+ if (not iPageSize.empty()) {
+ aParameters["pageSize"] = iPageSize; //!< The number of results to choose per page, e.g. "40"
+ }
+}
+std::string ApiUrl::operator()() const {
+ std::string aFormattedParameters;
+ for (const auto &[key, value] : aParameters) {
+ aFormattedParameters += std::format("&{}={}", key, value);
+ }
+ if (not aFormattedParameters.empty()) {
+ aFormattedParameters[0] = '?';
+ }
+ aFormattedParameters =
+ std::format("https://{}.api.blizzard.com/hearthstone/{}/{}", mRegion, mContentType, aFormattedParameters);
+ return aFormattedParameters;
+}