KDEAmbi/wledconfigclient.cpp

39 lines
1.2 KiB
C++

#include "wledconfigclient.h"
#include <QDebug>
WledConfigClient::WledConfigClient(const QString &host, QObject *parent) :
QObject(parent),
_wledHost(host)
{
_networkAccessManager = new QNetworkAccessManager(this);
connect(_networkAccessManager, &QNetworkAccessManager::finished, this, &WledConfigClient::onInfoReplyFinished);
}
WledConfigClient::~WledConfigClient()
{
qDebug() << "WledConfigClient destroyed.";
}
void WledConfigClient::getInfo()
{
QUrl url(QString("http://%1/json/info").arg(_wledHost));
QNetworkRequest request(url);
_networkAccessManager->get(request);
qDebug() << "WledConfigClient: Requesting info from" << url.toString();
}
void WledConfigClient::onInfoReplyFinished(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError) {
QByteArray responseData = reply->readAll();
QJsonDocument jsonDoc = QJsonDocument::fromJson(responseData);
if (jsonDoc.isObject()) {
emit infoReceived(jsonDoc.object());
} else {
emit error("Invalid JSON response from WLED /json/info");
}
} else {
emit error(QString("Network error: %1").arg(reply->errorString()));
}
reply->deleteLater();
}