Remove NetworkManager urlPut function

This commit is contained in:
Rasmus Karlsson
2018-07-06 19:49:10 +00:00
parent 091b597fe9
commit faa088b7e5
3 changed files with 18 additions and 63 deletions
-44
View File
@@ -24,50 +24,6 @@ public:
static void init(); static void init();
static void deinit(); static void deinit();
template <typename FinishedCallback>
static void urlPut(QNetworkRequest request, FinishedCallback onFinished, QByteArray *data)
{
NetworkRequester requester;
NetworkWorker *worker = new NetworkWorker;
worker->moveToThread(&NetworkManager::workerThread);
QObject::connect(
&requester, &NetworkRequester::requestUrl, worker,
[worker, data, onFinished = std::move(onFinished), request = std::move(request)]() {
QNetworkReply *reply = NetworkManager::NaM.put(request, *data);
reply->connect(reply, &QNetworkReply::finished,
[worker, reply, onFinished = std::move(onFinished)]() {
onFinished(reply);
delete worker;
});
});
emit requester.requestUrl();
}
template <typename FinishedCallback>
static void urlPut(QNetworkRequest request, FinishedCallback onFinished)
{
NetworkRequester requester;
NetworkWorker *worker = new NetworkWorker;
worker->moveToThread(&NetworkManager::workerThread);
QObject::connect(
&requester, &NetworkRequester::requestUrl, worker,
[onFinished = std::move(onFinished), request = std::move(request), worker]() {
QNetworkReply *reply = NetworkManager::NaM.put(request, "");
reply->connect(reply, &QNetworkReply::finished,
[onFinished = std::move(onFinished), reply, worker]() {
onFinished(reply);
delete worker;
});
});
emit requester.requestUrl();
}
}; };
} // namespace chatterino } // namespace chatterino
+12 -15
View File
@@ -80,9 +80,11 @@ static void twitchApiGetUserID(QString username, const QObject *caller,
successCallback(id.toString()); successCallback(id.toString());
}); });
} }
static void twitchApiPut(QUrl url, std::function<void(QJsonObject)> successCallback) static void twitchApiPut(QUrl url, std::function<void(const rapidjson::Document &)> successCallback)
{ {
QNetworkRequest request(url); NetworkRequest request(url);
request.setRequestType(NetworkRequest::PutRequest);
request.setCaller(QThread::currentThread());
auto currentTwitchUser = getApp()->accounts->twitch.getCurrent(); auto currentTwitchUser = getApp()->accounts->twitch.getCurrent();
QByteArray oauthToken; QByteArray oauthToken;
@@ -92,22 +94,17 @@ static void twitchApiPut(QUrl url, std::function<void(QJsonObject)> successCallb
// XXX(pajlada): Bail out? // XXX(pajlada): Bail out?
} }
request.setRawHeader("Client-ID", getDefaultClientID()); request.makeAuthorizedV5(getDefaultClientID(), currentTwitchUser->getOAuthToken());
request.setRawHeader("Accept", "application/vnd.twitchtv.v5+json");
request.setRawHeader("Authorization", "OAuth " + oauthToken);
NetworkManager::urlPut(std::move(request), [=](QNetworkReply *reply) { request.onSuccess([successCallback](const auto &document) {
if (reply->error() == QNetworkReply::NetworkError::NoError) { if (!document.IsNull()) {
QByteArray data = reply->readAll(); successCallback(document);
QJsonDocument jsonDoc(QJsonDocument::fromJson(data));
if (!jsonDoc.isNull()) {
QJsonObject rootNode = jsonDoc.object();
successCallback(rootNode);
}
} }
reply->deleteLater();
return true;
}); });
request.execute();
} }
static void twitchApiDelete(QUrl url, std::function<void()> successCallback) static void twitchApiDelete(QUrl url, std::function<void()> successCallback)
+6 -4
View File
@@ -178,7 +178,7 @@ void UserInfoPopup::installEvents()
this->ui_.follow->setEnabled(false); this->ui_.follow->setEnabled(false);
if (this->ui_.follow->isChecked()) { if (this->ui_.follow->isChecked()) {
twitchApiPut(requestUrl, [this](QJsonObject) { this->ui_.follow->setEnabled(true); }); twitchApiPut(requestUrl, [this](const auto &) { this->ui_.follow->setEnabled(true); });
} else { } else {
twitchApiDelete(requestUrl, [this] { this->ui_.follow->setEnabled(true); }); twitchApiDelete(requestUrl, [this] { this->ui_.follow->setEnabled(true); });
} }
@@ -373,9 +373,11 @@ UserInfoPopup::TimeoutWidget::TimeoutWidget()
} }
a->setBorderColor(color1); a->setBorderColor(color1);
QObject::connect(a.getElement(), &RippleEffectLabel2::clicked, [ QObject::connect(
this, timeout = std::get<1>(item) a.getElement(), &RippleEffectLabel2::clicked,
] { this->buttonClicked.invoke(std::make_pair(Action::Timeout, timeout)); }); [this, timeout = std::get<1>(item)] {
this->buttonClicked.invoke(std::make_pair(Action::Timeout, timeout));
});
} }
} }
}; };