summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-04-12 16:53:42 +0500
committerilotterytea <iltsu@alright.party>2025-04-12 16:53:42 +0500
commitcd745390a89194fb7ae430f3bc8a73a7fc315ef0 (patch)
treee41d8f457605d95827a3dd92279b52b716b76b9d
parent8a5c0ccec6a7d03525ba4e788c47f2c3c82b0238 (diff)
feat: get users with ids and logins
-rw-r--r--bot/src/api/twitch/helix_client.cpp44
-rw-r--r--bot/src/api/twitch/helix_client.hpp3
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(), [&params](const int &id) {
+ params.push_back("id=" + std::to_string(id));
+ });
+
+ std::for_each(logins.begin(), logins.end(),
+ [&params](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;