diff options
Diffstat (limited to 'src/api/twitch')
| -rw-r--r-- | src/api/twitch/helix_client.cpp | 144 | ||||
| -rw-r--r-- | src/api/twitch/helix_client.hpp | 31 | ||||
| -rw-r--r-- | src/api/twitch/schemas/stream.hpp | 35 | ||||
| -rw-r--r-- | src/api/twitch/schemas/user.hpp | 10 |
4 files changed, 0 insertions, 220 deletions
diff --git a/src/api/twitch/helix_client.cpp b/src/api/twitch/helix_client.cpp deleted file mode 100644 index 04d630b..0000000 --- a/src/api/twitch/helix_client.cpp +++ /dev/null @@ -1,144 +0,0 @@ -#include "helix_client.hpp" - -#include <nlohmann/json.hpp> -#include <string> -#include <vector> - -#include "cpr/api.h" -#include "cpr/bearer.h" -#include "cpr/cprtypes.h" -#include "cpr/response.h" -#include "schemas/stream.hpp" -#include "schemas/user.hpp" - -namespace bot::api::twitch { - HelixClient::HelixClient(const std::string &token, - const std::string &client_id) { - this->token = token; - this->client_id = client_id; - } - - std::vector<schemas::User> HelixClient::get_users( - const std::vector<std::string> &logins) const { - std::string s; - - for (auto i = logins.begin(); i != logins.end(); i++) { - std::string start; - if (i == logins.begin()) { - start = "?"; - } else { - start = "&"; - } - - s += start + "login=" + *i; - } - - return this->get_users_by_query(s); - } - - std::vector<schemas::User> HelixClient::get_users( - const std::vector<int> &ids) const { - std::string s; - - for (auto i = ids.begin(); i != ids.end(); i++) { - std::string start; - if (i == ids.begin()) { - start = "?"; - } else { - start = "&"; - } - - s += start + "id=" + std::to_string(*i); - } - - return this->get_users_by_query(s); - } - - std::vector<schemas::User> HelixClient::get_users_by_query( - const std::string &query) const { - cpr::Response response = cpr::Get( - cpr::Url{this->base_url + "/users" + query}, cpr::Bearer{this->token}, - cpr::Header{{"Client-Id", this->client_id.c_str()}}); - - if (response.status_code != 200) { - return {}; - } - - std::vector<schemas::User> users; - - nlohmann::json j = nlohmann::json::parse(response.text); - - for (const auto &d : j["data"]) { - schemas::User u{std::stoi(d["id"].get<std::string>()), d["login"]}; - - users.push_back(u); - } - - return users; - } - - std::vector<schemas::User> HelixClient::get_chatters( - const int &broadcaster_id, const int &moderator_id) const { - cpr::Response response = - cpr::Get(cpr::Url{this->base_url + "/chat/chatters?broadcaster_id=" + - std::to_string(broadcaster_id) + - "&moderator_id=" + std::to_string(moderator_id)}, - cpr::Bearer{this->token}, - cpr::Header{{"Client-Id", this->client_id.c_str()}}); - - if (response.status_code != 200) { - return {}; - } - - std::vector<schemas::User> users; - - nlohmann::json j = nlohmann::json::parse(response.text); - - for (const auto &d : j["data"]) { - schemas::User u{std::stoi(d["user_id"].get<std::string>()), - d["user_login"]}; - - users.push_back(u); - } - - return users; - } - - std::vector<schemas::Stream> HelixClient::get_streams( - const std::vector<int> &ids) const { - std::string s; - - for (auto i = ids.begin(); i != ids.end(); i++) { - std::string start; - if (i == ids.begin()) { - start = "?"; - } else { - start = "&"; - } - - s += start + "user_id=" + std::to_string(*i); - } - - cpr::Response response = cpr::Get( - cpr::Url{this->base_url + "/streams" + s}, cpr::Bearer{this->token}, - cpr::Header{{"Client-Id", this->client_id.c_str()}}); - - if (response.status_code != 200) { - return {}; - } - - std::vector<schemas::Stream> streams; - - nlohmann::json j = nlohmann::json::parse(response.text); - - for (const auto &d : j["data"]) { - schemas::Stream u{std::stoi(d["user_id"].get<std::string>()), - d["user_login"], d["game_name"], d["title"], - d["started_at"]}; - - streams.push_back(u); - } - - return streams; - } -} diff --git a/src/api/twitch/helix_client.hpp b/src/api/twitch/helix_client.hpp deleted file mode 100644 index 27a9fa3..0000000 --- a/src/api/twitch/helix_client.hpp +++ /dev/null @@ -1,31 +0,0 @@ -#pragma once - -#include <string> -#include <vector> - -#include "schemas/stream.hpp" -#include "schemas/user.hpp" - -namespace bot::api::twitch { - class HelixClient { - public: - HelixClient(const std::string &token, const std::string &client_id); - ~HelixClient() = default; - - std::vector<schemas::User> get_users( - const std::vector<std::string> &logins) const; - std::vector<schemas::User> get_users(const std::vector<int> &ids) const; - - std::vector<schemas::User> get_chatters(const int &broadcaster_id, - const int &moderator_id) const; - - std::vector<schemas::Stream> get_streams( - const std::vector<int> &ids) const; - - private: - std::vector<schemas::User> get_users_by_query( - const std::string &query) const; - std::string token, client_id; - const std::string base_url = "https://api.twitch.tv/helix"; - }; -} diff --git a/src/api/twitch/schemas/stream.hpp b/src/api/twitch/schemas/stream.hpp deleted file mode 100644 index e3d485e..0000000 --- a/src/api/twitch/schemas/stream.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include <chrono> -#include <string> - -#include "../../../utils/chrono.hpp" - -namespace bot::api::twitch::schemas { - class Stream { - public: - Stream(int user_id, std::string user_login, std::string game_name, - std::string title, std::string started_at) - : user_id(user_id), - user_login(user_login), - game_name(game_name), - title(title), - started_at(utils::chrono::string_to_time_point( - started_at, "%Y-%m-%dT%H:%M:%SZ")) {} - - Stream(int user_id) : user_id(user_id) {} - - const int &get_user_id() const { return this->user_id; } - const std::string &get_user_login() const { return this->user_login; } - const std::string &get_game_name() const { return this->game_name; } - const std::string &get_title() const { return this->title; } - const std::chrono::system_clock::time_point &get_started_at() const { - return this->started_at; - } - - private: - int user_id; - std::string user_login, game_name, title; - std::chrono::system_clock::time_point started_at; - }; -} diff --git a/src/api/twitch/schemas/user.hpp b/src/api/twitch/schemas/user.hpp deleted file mode 100644 index 288ec72..0000000 --- a/src/api/twitch/schemas/user.hpp +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include <string> - -namespace bot::api::twitch::schemas { - struct User { - int id; - std::string login; - }; -} |
