Add weather routes project progress
This commit is contained in:
42
WeatherRoutes/mvc/controller/networkmanager.cpp
Normal file
42
WeatherRoutes/mvc/controller/networkmanager.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user