feat: add initial experimental Twitch Eventsub support (#5837)

Co-authored-by: nerix <nerixdev@outlook.de>
This commit is contained in:
pajlada
2025-02-02 17:03:24 +01:00
committed by GitHub
parent f9f7d47b43
commit 0f8a29fdb9
130 changed files with 19656 additions and 8 deletions
@@ -0,0 +1,63 @@
#pragma once
#include "providers/twitch/eventsub/SubscriptionRequest.hpp"
#include "twitch-eventsub-ws/listener.hpp"
#include "twitch-eventsub-ws/session.hpp"
#include <boost/date_time.hpp>
#include <QString>
#include <unordered_set>
namespace chatterino::eventsub {
class Connection final : public lib::Listener
{
public:
void onSessionWelcome(
lib::messages::Metadata metadata,
lib::payload::session_welcome::Payload payload) override;
void onNotification(lib::messages::Metadata metadata,
const boost::json::value &jv) override;
void onChannelBan(lib::messages::Metadata metadata,
lib::payload::channel_ban::v1::Payload payload) override;
void onStreamOnline(
lib::messages::Metadata metadata,
lib::payload::stream_online::v1::Payload payload) override;
void onStreamOffline(
lib::messages::Metadata metadata,
lib::payload::stream_offline::v1::Payload payload) override;
void onChannelChatNotification(
lib::messages::Metadata metadata,
lib::payload::channel_chat_notification::v1::Payload payload) override;
void onChannelUpdate(
lib::messages::Metadata metadata,
lib::payload::channel_update::v1::Payload payload) override;
void onChannelChatMessage(
lib::messages::Metadata metadata,
lib::payload::channel_chat_message::v1::Payload payload) override;
void onChannelModerate(
lib::messages::Metadata metadata,
lib::payload::channel_moderate::v2::Payload payload) override;
QString getSessionID() const;
bool isSubscribedTo(const SubscriptionRequest &request) const;
void markRequestSubscribed(const SubscriptionRequest &request);
// TODO: Add an "markRequestUnsubscribed" method
private:
QString sessionID;
std::unordered_set<SubscriptionRequest> subscriptions;
};
} // namespace chatterino::eventsub