139 lines
4.3 KiB
C++
139 lines
4.3 KiB
C++
#ifndef TTW_API_H
|
|
#define TTW_API_H
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <QDate>
|
|
#include <QVector>
|
|
#include <QNetworkAccessManager>
|
|
#include <QNetworkReply>
|
|
#include "user.h"
|
|
#include "badge.h"
|
|
|
|
class TCustomReward;
|
|
class TCustomRewardEvent;
|
|
struct ChatBadge;
|
|
class Emote;
|
|
|
|
class TTwAPI : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit TTwAPI(QObject *parent = nullptr);
|
|
~TTwAPI();
|
|
|
|
// Инициализация
|
|
void init(const QString &clientId,
|
|
const QString &token,
|
|
const QString &streamerToken,
|
|
const QString &channel,
|
|
const QString &botName);
|
|
|
|
// Основные методы
|
|
void getTTWStat(const QString &channel,
|
|
int &avgViewers,
|
|
int &maxViewers,
|
|
int &hoursWatched,
|
|
int &followers,
|
|
int &followersTotal);
|
|
|
|
void shoutouts(const QString &id);
|
|
void sendNotify(const QString &text);
|
|
void banUser(const QString &id);
|
|
void banUserTime(const QString &id, int timeMinutes);
|
|
void unbanUser(const QString &id);
|
|
void warnUser(const QString &id);
|
|
void raid(const QString &id);
|
|
void unraid();
|
|
|
|
void setModerator(const QString &id);
|
|
void delModerator(const QString &id);
|
|
void setVIP(const QString &id);
|
|
void delVIP(const QString &id);
|
|
|
|
// Custom Rewards
|
|
void getCustomRewards(QVector<TCustomReward*> &rewards, bool onlyManageable = false);
|
|
TCustomReward* createCustomReward(const QString &title,
|
|
const QString &cost,
|
|
const QString &prompt = "",
|
|
bool isUserInput = false);
|
|
void updateCustomReward(TCustomReward* reward);
|
|
void updateRedemptionStatus(TCustomRewardEvent* event);
|
|
bool deleteCustomReward(const QString &id);
|
|
|
|
// Пользователи
|
|
User getUserByLogin(const QString &login);
|
|
QDate getFollow(const QString &id);
|
|
|
|
// Эмоции и бейджи
|
|
void getGlobalChatBadges(QVector<ChatBadge> &badges); // Изменено
|
|
void getCustomChatBadges(QVector<ChatBadge> &badges); // Изменено
|
|
void getChannelEmotes(QVector<Emote*> &emotes);
|
|
void getGlobalEmotes(QVector<Emote*> &emotes);
|
|
|
|
// Валидация токена
|
|
bool validateTwitchToken(const QString &tokenName,
|
|
const QString &tokenValue,
|
|
int &daysValid);
|
|
|
|
// Вспомогательные методы
|
|
QString getRoomId();
|
|
QString getRoomAndBot();
|
|
|
|
void sendAnnouncement(const QString &message);
|
|
|
|
// Сигналы
|
|
void logMessage(int level, const QString &method, const QString &message);
|
|
|
|
private:
|
|
// HTTP методы
|
|
QString getTTW(const QString &method,
|
|
const QString &clientId,
|
|
bool isStreamer = false);
|
|
|
|
QString deleteTTW(const QString &method,
|
|
const QString &clientId,
|
|
bool isStreamer = false);
|
|
|
|
QString postTTW(const QString &method,
|
|
const QString &clientId,
|
|
const QByteArray &data,
|
|
bool isStreamer = false);
|
|
|
|
QString patchTTW(const QString &method,
|
|
const QString &clientId,
|
|
const QByteArray &data,
|
|
bool isStreamer = false);
|
|
|
|
// Вспомогательные методы
|
|
QString getFollowedAtFromJson(const QString &jsonString);
|
|
QString sendRequest(const QString &url,
|
|
const QString &method,
|
|
const QByteArray &data = QByteArray(),
|
|
const QString &token = "");
|
|
// Парсинг бейджей
|
|
void parseBadgesFromApi(const QString &jsonString, QVector<ChatBadge> &badges);
|
|
|
|
// Члены данных
|
|
QString m_tokenApi;
|
|
QString m_tokenApiStreamer;
|
|
QString m_clientId;
|
|
QString m_channelName;
|
|
QString m_botName;
|
|
|
|
void sendAnnouncementToChat(const QString &message);
|
|
|
|
QNetworkAccessManager *m_networkManager;
|
|
QString getBotId();
|
|
// Логгирование
|
|
void toLog(int level, const QString &method, const QString &message);
|
|
|
|
signals:
|
|
void apiError(const QString &method, const QString &error);
|
|
void tokenExpired(const QString &error);
|
|
void rateLimitExceeded();
|
|
};
|
|
|
|
#endif // TTW_API_H
|