mirror of
https://gitlab.com/comunic/comunicwatcher
synced 2024-10-22 14:44:22 +00:00
79 lines
1.9 KiB
C++
79 lines
1.9 KiB
C++
#include "accounthelper.h"
|
|
#include "apirequest.h"
|
|
#include "config.h"
|
|
#include "loginwindow.h"
|
|
#include "refreshservice.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);
|
|
|
|
addString("incognito", "true");
|
|
|
|
if(AccountHelper::SignedIn()) {
|
|
addString("userToken1", AccountHelper::GetLoginToken());
|
|
addString("userToken2", "dummy_data");
|
|
}
|
|
}
|
|
|
|
void APIRequest::addString(const QString &name, const QString &value)
|
|
{
|
|
mArgs[name] = value;
|
|
}
|
|
|
|
void APIRequest::addInt(const QString &name, int value)
|
|
{
|
|
mArgs[name] = QString::number(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();
|
|
|
|
deleteLater();
|
|
qDebug("Request: %s - %d - %s", mURI.toStdString().c_str(), code, content.toStdString().c_str());
|
|
|
|
|
|
// Check if login token was destroyed
|
|
if(code == 412) {
|
|
RefreshService::signOutUser();
|
|
return;
|
|
}
|
|
|
|
|
|
emit done(APIResponse(code, content));
|
|
|
|
}
|