#pragma once #include "token.hpp" #include #include class HearthstoneApi { public: HearthstoneApi(); std::string getCards(const std::string &t_card_parameters); friend class HearthstoneApiTests; private: /** * @brief Get a valid token to call Battle.net API * @return A valid token */ std::string getValidTokenWithApi() const; static size_t curlCallbackStringOutput(void *t_contents, size_t t_size, size_t t_nmemb, std::string *t_s); std::chrono::seconds getCurrentTime() const; std::string extractStringWithRegex(const std::string &t_str, const std::string t_regex) const; void writeTokenToFile(const std::string &iToken) const; void writeNewTokenToFile() const; void refreshToken(); std::string getValidToken(); std::string generateRequestHeader(); const std::string getUrl(const std::string &t_parameters); const std::string getSetOfCardsUrl(const std::string &t_card_parameters); std::string makeApiRequest(const char *t_url, const char *t_header); std::string makeApiRequest(const std::string &t_url, const std::string &t_header); // TODO: add Token object // Token mToken; std::string mTokenFilePath; std::string mToken; std::string m_header; };