summaryrefslogtreecommitdiff
path: root/subprojects/battleNetApi/include/hearthstoneApi.hpp
blob: 0ed9b576874a00401196698992322b5af2e9126f (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
38
39
40
#pragma once
#include "token.hpp"
#include <string>
#include <unordered_map>

class ApiUrlParameters {
  public:
    void setLocale(const std::string iLocale) {
        aParameters["locale"] = iLocale; //<! fr_FR
    }
    void setGameMode(const std::string iGameMode) {
        aParameters["gameMode"] = iGameMode; //<! constructed
    }
    std::ostream &operator<<(std::ostream &iOstream) {
        // TODO: complete
        return iOstream;
    }

  private:
    std::unordered_map<std::string, std::string> aParameters;
};

class HearthstoneApi {
  public:
    HearthstoneApi(Token &&iToken);
    std::uint64_t numberOfCards();
    std::string cards(const std::string &iCardParameters);

  private:
    std::string authorizationHeader();
    std::string makeApiRequest(const std::string &iUrl) const;
    const std::string apiUrl(const std::string &iParameters) const;
    const std::string setOfCardsUrl(const std::string &iCardParameters);
    static size_t curlCallbackStringOutput(void *iContent, size_t iSize, size_t iNmemb, std::string *iS);

    Token mToken;
    std::string mAuthorizationHeader; //<! Bearer authorization string for OAuth 2.0 header

    friend class HearthstoneApiMock;
};