Files
qt-dev-env/WeatherRoutes/mvc/controller/networkmanager.cpp

43 lines
1.1 KiB
C++

#include "networkmanager.h"
#include "QStandardPaths"
#include <QFile>
#include <QGuiApplication>
#include <QJsonDocument>
#include <QNetworkAccessManager>
#include <QNetworkReply>
NetworkManager *NetworkManager::m_instance;
NetworkManager::NetworkManager(QObject *parent) : QObject{parent} {}
NetworkManager *NetworkManager::Instance() {
if (m_instance != nullptr) {
return m_instance;
}
m_instance = new NetworkManager();
return m_instance;
}
void NetworkManager::fetchJSONfromAPI(QUrl url, QJsonDocument &doc)
{
qDebug() << "Fetch URL::" << url.toDisplayString();
QNetworkAccessManager m_manager;
QNetworkRequest request(url);
QNetworkReply *reply = m_manager.get(request);
QEventLoop loop;
connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
loop.exec();
if (reply->error() == QNetworkReply::NoError)
{
QByteArray response = reply->readAll();
doc = QJsonDocument::fromJson(response);
}
else
{
qDebug() << "Invalid JSON response:: " << reply->errorString();
}
reply->deleteLater();
}