first commit
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
#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;
|
||||
class 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);
|
||||
TCustomReward* createCustomReward(const QString &title,
|
||||
const QString &cost,
|
||||
const QString &prompt = "",
|
||||
bool isUserInput = false);
|
||||
void updateCustomReward(TCustomReward* reward);
|
||||
void updateRedemptionStatus(TCustomRewardEvent* event);
|
||||
void 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
|
||||
Reference in New Issue
Block a user