#ifndef TTW_API_H #define TTW_API_H #include #include #include #include #include #include #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 &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 &badges); // Изменено void getCustomChatBadges(QVector &badges); // Изменено void getChannelEmotes(QVector &emotes); void getGlobalEmotes(QVector &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 &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