diff options
| -rw-r--r-- | bot/src/api/twitch/helix_client.cpp | 44 | ||||
| -rw-r--r-- | 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 <algorithm> #include <nlohmann/json.hpp> #include <string> #include <vector> @@ -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<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); + return this->get_users({}, logins); } std::vector<schemas::User> HelixClient::get_users( const std::vector<int> &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<schemas::User> HelixClient::get_users( + const std::vector<int> &ids, + const std::vector<std::string> logins) const { + std::vector<std::string> 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<schemas::User> 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<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_users( + const std::vector<int> &ids, + const std::vector<std::string> logins) const; std::vector<schemas::User> get_chatters(const int &broadcaster_id, const int &moderator_id) const; |
