#pragma once #include "common/NetworkRequest.hpp" #include #include #include #include #include namespace chatterino { using KrakenFailureCallback = std::function; template using ResultCallback = std::function; struct KrakenChannel { const QString status; KrakenChannel(QJsonObject jsonObject) : status(jsonObject.value("status").toString()) { } }; struct KrakenUser { const QString createdAt; KrakenUser(QJsonObject jsonObject) : createdAt(jsonObject.value("created_at").toString()) { } }; class Kraken final : boost::noncopyable { public: // https://dev.twitch.tv/docs/v5/reference/users#follow-channel void getChannel(QString userId, ResultCallback resultCallback, KrakenFailureCallback failureCallback); // https://dev.twitch.tv/docs/v5/reference/users#get-user-by-id void getUser(QString userId, ResultCallback resultCallback, KrakenFailureCallback failureCallback); void update(QString clientId, QString oauthToken); static void initialize(); private: NetworkRequest makeRequest(QString url, QUrlQuery urlQuery); QString clientId; QString oauthToken; }; Kraken *getKraken(); } // namespace chatterino