summaryrefslogtreecommitdiff
path: root/subprojects/battleNetApi/include/hearthstoneApi.hpp
blob: fcd84c02daa51ddeb5d6d0a12d55b5a6f4850ca9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma once
#include "token.hpp"
#include <chrono>
#include <string>

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;
};