refactor: Remove Outcome from network requests (#4959)
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
#include "common/Literals.hpp"
|
||||
#include "common/NetworkRequest.hpp"
|
||||
#include "common/NetworkResult.hpp"
|
||||
#include "common/Outcome.hpp"
|
||||
#include "common/QLogging.hpp"
|
||||
#include "util/CancellationToken.hpp"
|
||||
|
||||
@@ -57,14 +56,14 @@ void Helix::fetchUsers(QStringList userIds, QStringList userLogins,
|
||||
|
||||
// TODO: set on success and on error
|
||||
this->makeGet("users", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<HelixUser> users;
|
||||
@@ -75,8 +74,6 @@ void Helix::fetchUsers(QStringList userIds, QStringList userLogins,
|
||||
}
|
||||
|
||||
successCallback(users);
|
||||
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
// TODO: make better xd
|
||||
@@ -138,15 +135,14 @@ void Helix::getChannelFollowers(
|
||||
|
||||
// TODO: set on success and on error
|
||||
this->makeGet("channels/followers", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
if (root.empty())
|
||||
{
|
||||
failureCallback("Bad JSON response");
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
successCallback(HelixGetChannelFollowersResponse(root));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
@@ -182,14 +178,14 @@ void Helix::fetchStreams(
|
||||
|
||||
// TODO: set on success and on error
|
||||
this->makeGet("streams", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<HelixStream> streams;
|
||||
@@ -200,8 +196,6 @@ void Helix::fetchStreams(
|
||||
}
|
||||
|
||||
successCallback(streams);
|
||||
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
// TODO: make better xd
|
||||
@@ -275,14 +269,14 @@ void Helix::fetchGames(QStringList gameIds, QStringList gameNames,
|
||||
|
||||
// TODO: set on success and on error
|
||||
this->makeGet("games", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<HelixGame> games;
|
||||
@@ -293,8 +287,6 @@ void Helix::fetchGames(QStringList gameIds, QStringList gameNames,
|
||||
}
|
||||
|
||||
successCallback(games);
|
||||
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
// TODO: make better xd
|
||||
@@ -311,14 +303,14 @@ void Helix::searchGames(QString gameName,
|
||||
urlQuery.addQueryItem("query", gameName);
|
||||
|
||||
this->makeGet("search/categories", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<HelixGame> games;
|
||||
@@ -329,8 +321,6 @@ void Helix::searchGames(QString gameName,
|
||||
}
|
||||
|
||||
successCallback(games);
|
||||
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
// TODO: make better xd
|
||||
@@ -369,20 +359,19 @@ void Helix::createClip(QString channelId,
|
||||
|
||||
this->makePost("clips", urlQuery)
|
||||
.header("Content-Type", "application/json")
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback(HelixClipError::Unknown);
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
HelixClip clip(data.toArray()[0].toObject());
|
||||
|
||||
successCallback(clip);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto result) {
|
||||
switch (result.status().value_or(0))
|
||||
@@ -425,14 +414,14 @@ void Helix::fetchChannels(
|
||||
}
|
||||
|
||||
this->makeGet("channels", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<HelixChannel> channels;
|
||||
@@ -443,7 +432,6 @@ void Helix::fetchChannels(
|
||||
}
|
||||
|
||||
successCallback(channels);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
failureCallback();
|
||||
@@ -459,20 +447,19 @@ void Helix::getChannel(QString broadcasterId,
|
||||
urlQuery.addQueryItem("broadcaster_id", broadcasterId);
|
||||
|
||||
this->makeGet("channels", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
HelixChannel channel(data.toArray()[0].toObject());
|
||||
|
||||
successCallback(channel);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
failureCallback();
|
||||
@@ -495,20 +482,19 @@ void Helix::createStreamMarker(
|
||||
|
||||
this->makePost("streams/markers", QUrlQuery())
|
||||
.json(payload)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback(HelixStreamMarkerError::Unknown);
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
HelixStreamMarker streamMarker(data.toArray()[0].toObject());
|
||||
|
||||
successCallback(streamMarker);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](NetworkResult result) {
|
||||
switch (result.status().value_or(0))
|
||||
@@ -597,9 +583,8 @@ void Helix::blockUser(QString targetUserId, const QObject *caller,
|
||||
|
||||
this->makePut("users/blocks", urlQuery)
|
||||
.caller(caller)
|
||||
.onSuccess([successCallback](auto /*result*/) -> Outcome {
|
||||
.onSuccess([successCallback](auto /*result*/) {
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
// TODO: make better xd
|
||||
@@ -617,9 +602,8 @@ void Helix::unblockUser(QString targetUserId, const QObject *caller,
|
||||
|
||||
this->makeDelete("users/blocks", urlQuery)
|
||||
.caller(caller)
|
||||
.onSuccess([successCallback](auto /*result*/) -> Outcome {
|
||||
.onSuccess([successCallback](auto /*result*/) {
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto /*result*/) {
|
||||
// TODO: make better xd
|
||||
@@ -657,9 +641,8 @@ void Helix::updateChannel(QString broadcasterId, QString gameId,
|
||||
urlQuery.addQueryItem("broadcaster_id", broadcasterId);
|
||||
this->makePatch("channels", urlQuery)
|
||||
.json(obj)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
successCallback(result);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](NetworkResult result) {
|
||||
failureCallback();
|
||||
@@ -680,9 +663,8 @@ void Helix::manageAutoModMessages(
|
||||
|
||||
this->makePost("moderation/automod/message", QUrlQuery())
|
||||
.json(payload)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback, msgID, action](NetworkResult result) {
|
||||
switch (result.status().value_or(0))
|
||||
@@ -736,14 +718,14 @@ void Helix::getCheermotes(
|
||||
urlQuery.addQueryItem("broadcaster_id", broadcasterId);
|
||||
|
||||
this->makeGet("bits/cheermotes", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<HelixCheermoteSet> cheermoteSets;
|
||||
@@ -754,7 +736,6 @@ void Helix::getCheermotes(
|
||||
}
|
||||
|
||||
successCallback(cheermoteSets);
|
||||
return Success;
|
||||
})
|
||||
.onError([broadcasterId, failureCallback](NetworkResult result) {
|
||||
qCDebug(chatterinoTwitch)
|
||||
@@ -774,21 +755,19 @@ void Helix::getEmoteSetData(QString emoteSetId,
|
||||
urlQuery.addQueryItem("emote_set_id", emoteSetId);
|
||||
|
||||
this->makeGet("chat/emotes/set", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback,
|
||||
emoteSetId](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback, emoteSetId](auto result) {
|
||||
QJsonObject root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray() || data.toArray().isEmpty())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
HelixEmoteSetData emoteSetData(data.toArray()[0].toObject());
|
||||
|
||||
successCallback(emoteSetData);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](NetworkResult result) {
|
||||
// TODO: make better xd
|
||||
@@ -806,15 +785,14 @@ void Helix::getChannelEmotes(
|
||||
urlQuery.addQueryItem("broadcaster_id", broadcasterId);
|
||||
|
||||
this->makeGet("chat/emotes", urlQuery)
|
||||
.onSuccess([successCallback,
|
||||
failureCallback](NetworkResult result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](NetworkResult result) {
|
||||
QJsonObject root = result.parseJson();
|
||||
auto data = root.value("data");
|
||||
|
||||
if (!data.isArray())
|
||||
{
|
||||
failureCallback();
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<HelixChannelEmote> channelEmotes;
|
||||
@@ -825,7 +803,6 @@ void Helix::getChannelEmotes(
|
||||
}
|
||||
|
||||
successCallback(channelEmotes);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](auto result) {
|
||||
// TODO: make better xd
|
||||
@@ -847,7 +824,7 @@ void Helix::updateUserChatColor(
|
||||
|
||||
this->makePut("chat/color", QUrlQuery())
|
||||
.json(payload)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto obj = result.parseJson();
|
||||
if (result.status() != 204)
|
||||
{
|
||||
@@ -858,7 +835,6 @@ void Helix::updateUserChatColor(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -931,7 +907,7 @@ void Helix::deleteChatMessages(
|
||||
}
|
||||
|
||||
this->makeDelete("moderation/chat", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -941,7 +917,6 @@ void Helix::deleteChatMessages(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1016,7 +991,7 @@ void Helix::addChannelModerator(
|
||||
urlQuery.addQueryItem("user_id", userID);
|
||||
|
||||
this->makePost("moderation/moderators", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1026,7 +1001,6 @@ void Helix::addChannelModerator(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1111,7 +1085,7 @@ void Helix::removeChannelModerator(
|
||||
urlQuery.addQueryItem("user_id", userID);
|
||||
|
||||
this->makeDelete("moderation/moderators", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1121,7 +1095,6 @@ void Helix::removeChannelModerator(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1205,7 +1178,7 @@ void Helix::sendChatAnnouncement(
|
||||
|
||||
this->makePost("chat/announcements", urlQuery)
|
||||
.json(body)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1215,7 +1188,6 @@ void Helix::sendChatAnnouncement(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1281,7 +1253,7 @@ void Helix::addChannelVIP(
|
||||
urlQuery.addQueryItem("user_id", userID);
|
||||
|
||||
this->makePost("channels/vips", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1291,7 +1263,6 @@ void Helix::addChannelVIP(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1366,7 +1337,7 @@ void Helix::removeChannelVIP(
|
||||
urlQuery.addQueryItem("user_id", userID);
|
||||
|
||||
this->makeDelete("channels/vips", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1376,7 +1347,6 @@ void Helix::removeChannelVIP(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1462,7 +1432,7 @@ void Helix::unbanUser(
|
||||
urlQuery.addQueryItem("user_id", userID);
|
||||
|
||||
this->makeDelete("moderation/bans", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1472,7 +1442,6 @@ void Helix::unbanUser(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1574,11 +1543,9 @@ void Helix::startRaid(
|
||||
urlQuery.addQueryItem("to_broadcaster_id", toBroadcasterID);
|
||||
|
||||
this->makePost("raids", urlQuery)
|
||||
.onSuccess(
|
||||
[successCallback, failureCallback](auto /*result*/) -> Outcome {
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onSuccess([successCallback, failureCallback](auto /*result*/) {
|
||||
successCallback();
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
{
|
||||
@@ -1660,7 +1627,7 @@ void Helix::cancelRaid(
|
||||
urlQuery.addQueryItem("broadcaster_id", broadcasterID);
|
||||
|
||||
this->makeDelete("raids", urlQuery)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1670,7 +1637,6 @@ void Helix::cancelRaid(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1828,7 +1794,7 @@ void Helix::updateChatSettings(
|
||||
|
||||
this->makePatch("chat/settings", urlQuery)
|
||||
.json(payload)
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1838,7 +1804,6 @@ void Helix::updateChatSettings(
|
||||
auto response = result.parseJson();
|
||||
successCallback(HelixChatSettings(
|
||||
response.value("data").toArray().first().toObject()));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -1957,7 +1922,7 @@ void Helix::fetchChatters(
|
||||
}
|
||||
|
||||
this->makeGet("chat/chatters", urlQuery)
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -1967,7 +1932,6 @@ void Helix::fetchChatters(
|
||||
|
||||
auto response = result.parseJson();
|
||||
successCallback(HelixChatters(response));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2072,7 +2036,7 @@ void Helix::fetchModerators(
|
||||
}
|
||||
|
||||
this->makeGet("moderation/moderators", urlQuery)
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2082,7 +2046,6 @@ void Helix::fetchModerators(
|
||||
|
||||
auto response = result.parseJson();
|
||||
successCallback(HelixModerators(response));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2164,7 +2127,7 @@ void Helix::banUser(QString broadcasterID, QString moderatorID, QString userID,
|
||||
|
||||
this->makePost("moderation/bans", urlQuery)
|
||||
.json(payload)
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2173,7 +2136,6 @@ void Helix::banUser(QString broadcasterID, QString moderatorID, QString userID,
|
||||
}
|
||||
// we don't care about the response
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2267,7 +2229,7 @@ void Helix::sendWhisper(
|
||||
|
||||
this->makePost("whispers", urlQuery)
|
||||
.json(payload)
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2276,7 +2238,6 @@ void Helix::sendWhisper(
|
||||
}
|
||||
// we don't care about the response
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2416,7 +2377,7 @@ void Helix::getChannelVIPs(
|
||||
|
||||
this->makeGet("channels/vips", urlQuery)
|
||||
.header("Content-Type", "application/json")
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2433,7 +2394,6 @@ void Helix::getChannelVIPs(
|
||||
}
|
||||
|
||||
successCallback(channelVips);
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2509,18 +2469,17 @@ void Helix::startCommercial(
|
||||
|
||||
this->makePost("channels/commercial", QUrlQuery())
|
||||
.json(payload)
|
||||
.onSuccess([successCallback, failureCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback, failureCallback](auto result) {
|
||||
auto obj = result.parseJson();
|
||||
if (obj.isEmpty())
|
||||
{
|
||||
failureCallback(
|
||||
Error::Unknown,
|
||||
"Twitch didn't send any information about this error.");
|
||||
return Failure;
|
||||
return;
|
||||
}
|
||||
|
||||
successCallback(HelixStartCommercialResponse(obj));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2605,7 +2564,7 @@ void Helix::getGlobalBadges(
|
||||
using Error = HelixGetGlobalBadgesError;
|
||||
|
||||
this->makeGet("chat/badges/global", QUrlQuery())
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2615,7 +2574,6 @@ void Helix::getGlobalBadges(
|
||||
|
||||
auto response = result.parseJson();
|
||||
successCallback(HelixGlobalBadges(response));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2658,7 +2616,7 @@ void Helix::getChannelBadges(
|
||||
urlQuery.addQueryItem("broadcaster_id", broadcasterID);
|
||||
|
||||
this->makeGet("chat/badges", urlQuery)
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2668,7 +2626,6 @@ void Helix::getChannelBadges(
|
||||
|
||||
auto response = result.parseJson();
|
||||
successCallback(HelixChannelBadges(response));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2717,7 +2674,7 @@ void Helix::updateShieldMode(
|
||||
|
||||
this->makePut("moderation/shield_mode", urlQuery)
|
||||
.json(payload)
|
||||
.onSuccess([successCallback](auto result) -> Outcome {
|
||||
.onSuccess([successCallback](auto result) {
|
||||
if (result.status() != 200)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2728,7 +2685,6 @@ void Helix::updateShieldMode(
|
||||
const auto response = result.parseJson();
|
||||
successCallback(
|
||||
HelixShieldModeStatus(response["data"][0].toObject()));
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const auto &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2790,7 +2746,7 @@ void Helix::sendShoutout(
|
||||
|
||||
this->makePost("chat/shoutouts", urlQuery)
|
||||
.header("Content-Type", "application/json")
|
||||
.onSuccess([successCallback](NetworkResult result) -> Outcome {
|
||||
.onSuccess([successCallback](NetworkResult result) {
|
||||
if (result.status() != 204)
|
||||
{
|
||||
qCWarning(chatterinoTwitch)
|
||||
@@ -2799,7 +2755,6 @@ void Helix::sendShoutout(
|
||||
}
|
||||
|
||||
successCallback();
|
||||
return Success;
|
||||
})
|
||||
.onError([failureCallback](const NetworkResult &result) -> void {
|
||||
if (!result.status())
|
||||
@@ -2944,33 +2899,33 @@ void Helix::paginate(const QString &url, const QUrlQuery &baseQuery,
|
||||
CancellationToken &&cancellationToken)
|
||||
{
|
||||
auto onSuccess =
|
||||
std::make_shared<std::function<Outcome(NetworkResult)>>(nullptr);
|
||||
std::make_shared<std::function<void(NetworkResult)>>(nullptr);
|
||||
// This is the actual callback passed to NetworkRequest.
|
||||
// It wraps the shared-ptr.
|
||||
auto onSuccessCb = [onSuccess](const auto &res) -> Outcome {
|
||||
auto onSuccessCb = [onSuccess](const auto &res) {
|
||||
return (*onSuccess)(res);
|
||||
};
|
||||
|
||||
*onSuccess = [this, onPage = std::move(onPage), onError, onSuccessCb,
|
||||
url{url}, baseQuery{baseQuery},
|
||||
cancellationToken = std::move(cancellationToken)](
|
||||
const NetworkResult &res) -> Outcome {
|
||||
cancellationToken =
|
||||
std::move(cancellationToken)](const NetworkResult &res) {
|
||||
if (cancellationToken.isCancelled())
|
||||
{
|
||||
return Success;
|
||||
return;
|
||||
}
|
||||
|
||||
const auto json = res.parseJson();
|
||||
if (!onPage(json))
|
||||
{
|
||||
// The consumer doesn't want any more pages
|
||||
return Success;
|
||||
return;
|
||||
}
|
||||
|
||||
auto cursor = json["pagination"_L1]["cursor"_L1].toString();
|
||||
if (cursor.isEmpty())
|
||||
{
|
||||
return Success;
|
||||
return;
|
||||
}
|
||||
|
||||
auto query = baseQuery;
|
||||
@@ -2981,8 +2936,6 @@ void Helix::paginate(const QString &url, const QUrlQuery &baseQuery,
|
||||
.onSuccess(onSuccessCb)
|
||||
.onError(onError)
|
||||
.execute();
|
||||
|
||||
return Success;
|
||||
};
|
||||
|
||||
this->makeGet(url, baseQuery)
|
||||
|
||||
Reference in New Issue
Block a user