summaryrefslogtreecommitdiff
path: root/bot/src/stream.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'bot/src/stream.hpp')
-rw-r--r--bot/src/stream.hpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/bot/src/stream.hpp b/bot/src/stream.hpp
new file mode 100644
index 0000000..73313ed
--- /dev/null
+++ b/bot/src/stream.hpp
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <set>
+#include <vector>
+
+#include "api/twitch/helix_client.hpp"
+#include "api/twitch/schemas/stream.hpp"
+#include "config.hpp"
+#include "irc/client.hpp"
+#include "schemas/stream.hpp"
+
+namespace bot::stream {
+ class StreamListenerClient {
+ public:
+ StreamListenerClient(const api::twitch::HelixClient &helix_client,
+ irc::Client &irc_client,
+ const Configuration &configuration)
+ : helix_client(helix_client),
+ irc_client(irc_client),
+ configuration(configuration){};
+ ~StreamListenerClient() = default;
+
+ void run();
+ void listen_channel(const int &id);
+ void unlisten_channel(const int &id);
+
+ private:
+ void check();
+ void handler(const schemas::EventType &type,
+ const api::twitch::schemas::Stream &stream);
+ void update_channel_ids();
+
+ const api::twitch::HelixClient &helix_client;
+ irc::Client &irc_client;
+ const Configuration &configuration;
+
+ std::vector<int> ids;
+
+ std::set<int> online_ids;
+ };
+}