mirror of
https://gitlab.com/comunic/comunicwatcher
synced 2024-10-22 22:53:24 +00:00
55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
#include "apirequest.h"
|
|
#include "config.h"
|
|
|
|
#include <QHttpPart>
|
|
#include <QNetworkReply>
|
|
|
|
QNetworkAccessManager APIRequest::mNetworkManager;
|
|
|
|
APIRequest::APIRequest(const QString &uri, QObject *parent) : QObject(parent), mURI(uri)
|
|
{
|
|
addString("serviceName", API_SERVICE_NAME);
|
|
addString("serviceToken", API_SERVICE_TOKEN);
|
|
}
|
|
|
|
void APIRequest::addString(const QString &name, const QString &value)
|
|
{
|
|
mArgs[name] = value;
|
|
}
|
|
|
|
void APIRequest::exec()
|
|
{
|
|
QUrl url;
|
|
url.setScheme(API_SERVER_SCHEME);
|
|
url.setHost(API_HOST);
|
|
url.setPath(API_BASE_PATH + mURI);
|
|
|
|
QNetworkRequest req(url);
|
|
req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
|
|
|
QString query = "";
|
|
for(QString val : mArgs.keys()) {
|
|
if(!query.isEmpty())
|
|
query += "&";
|
|
|
|
query += QUrl::toPercentEncoding(val) + "=" + QUrl::toPercentEncoding(mArgs[val]);
|
|
}
|
|
|
|
|
|
// Execute request
|
|
mReply = mNetworkManager.post(req, query.toUtf8());
|
|
mReply->setParent(this);
|
|
connect(mReply, &QNetworkReply::finished, this, &APIRequest::onResponse);
|
|
}
|
|
|
|
void APIRequest::onResponse()
|
|
{
|
|
int code = mReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
|
QByteArray content = mReply->readAll();
|
|
|
|
emit done(APIResponse(code, content));
|
|
deleteLater();
|
|
|
|
qDebug("Request: %s - %d - %s", mURI.toStdString().c_str(), code, content.toStdString().c_str());
|
|
}
|