From cd745390a89194fb7ae430f3bc8a73a7fc315ef0 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sat, 12 Apr 2025 16:53:42 +0500 Subject: feat: get users with ids and logins --- bot/src/api/twitch/helix_client.cpp | 44 ++++++++++++++++--------------------- bot/src/api/twitch/helix_client.hpp | 3 +++ 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/bot/src/api/twitch/helix_client.cpp b/bot/src/api/twitch/helix_client.cpp index 04d630b..b80895a 100644 --- a/bot/src/api/twitch/helix_client.cpp +++ b/bot/src/api/twitch/helix_client.cpp @@ -1,5 +1,6 @@ #include "helix_client.hpp" +#include #include #include #include @@ -10,6 +11,7 @@ #include "cpr/response.h" #include "schemas/stream.hpp" #include "schemas/user.hpp" +#include "utils/string.hpp" namespace bot::api::twitch { HelixClient::HelixClient(const std::string &token, @@ -20,38 +22,30 @@ namespace bot::api::twitch { std::vector HelixClient::get_users( const std::vector &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); + return this->get_users({}, logins); } std::vector HelixClient::get_users( const std::vector &ids) const { - std::string s; + return this->get_users(ids, {}); + } - for (auto i = ids.begin(); i != ids.end(); i++) { - std::string start; - if (i == ids.begin()) { - start = "?"; - } else { - start = "&"; - } + std::vector HelixClient::get_users( + const std::vector &ids, + const std::vector logins) const { + std::vector params; - s += start + "id=" + std::to_string(*i); - } + std::for_each(ids.begin(), ids.end(), [¶ms](const int &id) { + params.push_back("id=" + std::to_string(id)); + }); + + std::for_each(logins.begin(), logins.end(), + [¶ms](const std::string &login) { + params.push_back("login=" + login); + }); - return this->get_users_by_query(s); + return this->get_users_by_query("?" + + utils::string::join_vector(params, '&')); } std::vector HelixClient::get_users_by_query( diff --git a/bot/src/api/twitch/helix_client.hpp b/bot/src/api/twitch/helix_client.hpp index 27a9fa3..399b149 100644 --- a/bot/src/api/twitch/helix_client.hpp +++ b/bot/src/api/twitch/helix_client.hpp @@ -15,6 +15,9 @@ namespace bot::api::twitch { std::vector get_users( const std::vector &logins) const; std::vector get_users(const std::vector &ids) const; + std::vector get_users( + const std::vector &ids, + const std::vector logins) const; std::vector get_chatters(const int &broadcaster_id, const int &moderator_id) const; -- cgit v1.2.3