#pragma once #include #include #include namespace bnet { enum class GameMode { constructed, battlegrounds, mercenaries }; class ApiUrl { public: ApiUrl(const std::string &iContentType, const std::string &iRegion); void setRegion(const std::string &iRegion); void setLocale(const std::string &iLocale); void setGameMode(const GameMode &iGameMode); void setPage(const std::string &iPage); void setPage(uint64_t iPage); void setPageSize(uint64_t iPageSize); bool hasRegion() const; bool hasLocale() const; bool hasGameMode() const; bool hasPage() const; bool hasPageSize() const; std::string text() const; private: static constexpr std::string kLOCALE_KEY{"locale"}; static constexpr std::string kGAME_MODE_KEY{"gameMode"}; static constexpr std::string kPAGE_KEY{"page"}; static constexpr std::string kPAGE_SIZE_KEY{"pageSize"}; std::string mContentType; std::string mRegion; std::unordered_map aParameters; void setValue(const std::string &iKey, const std::string &iValue); bool hasValue(const std::string &iKey) const; }; }; // namespace bnet