Remove urlFetchJSON usages. They now use NetworkRequest.getJSON

This commit is contained in:
Rasmus Karlsson
2017-10-27 21:22:06 +02:00
parent 75079d5ac8
commit 41ec892bf8
4 changed files with 67 additions and 45 deletions
+28 -7
View File
@@ -1,19 +1,31 @@
#pragma once
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QThread>
#include <QUrl>
namespace chatterino {
namespace messages {
class LazyLoadedImage;
} // namespace messages
namespace util {
static QJsonObject parseJSONFromReplyxD(QNetworkReply *reply)
{
if (reply->error() != QNetworkReply::NetworkError::NoError) {
return QJsonObject();
}
QByteArray data = reply->readAll();
QJsonDocument jsonDoc(QJsonDocument::fromJson(data));
if (jsonDoc.isNull()) {
return QJsonObject();
}
return jsonDoc.object();
}
class NetworkRequest
{
struct Data {
@@ -96,6 +108,15 @@ public:
emit requester.requestUrl();
}
template <typename FinishedCallback>
void getJSON(FinishedCallback onFinished)
{
this->get([onFinished{std::move(onFinished)}](auto reply) {
auto object = parseJSONFromReplyxD(reply);
onFinished(object);
});
}
};
class NetworkWorker : public QObject
-11
View File
@@ -38,17 +38,6 @@ static QJsonObject parseJSONFromReply(QNetworkReply *reply)
return jsonDoc.object();
}
static void urlFetchJSON(const QString &url, const QObject *caller,
std::function<void(QJsonObject &)> successCallback)
{
util::NetworkRequest req(url);
req.setCaller(caller);
req.get([=](QNetworkReply *reply) {
auto node = parseJSONFromReply(reply);
successCallback(node);
});
}
static void urlFetchTimeout(const QString &url, const QObject *caller,
std::function<void(QNetworkReply *)> successCallback, int timeoutMs)
{