File indexing completed on 2025-03-09 04:23:15

0001 #include <QByteArray>
0002 #include <QMap>
0003 #include <QNetworkAccessManager>
0004 #include <QString>
0005 #include <QUrl>
0006 
0007 #include "NetworkHelper.hpp"
0008 
0009 NetworkHelper::NetworkHelper(QString host, QString username, QString password)
0010 {
0011     this->host = host;
0012     this->username = username;
0013     this->password = password;
0014 
0015     this->networkManager = new QNetworkAccessManager(this);
0016 }
0017 
0018 QNetworkReply *NetworkHelper::makeRequest(QString method, QString path, QMap<QString, QString> headers)
0019 {
0020     QNetworkRequest request(QUrl(this->host + QStringLiteral("/") + path));
0021 
0022     this->setRequestAuthHeader(&request);
0023     this->setRequestHeaders(&request, headers);
0024 
0025     QNetworkReply *reply = this->networkManager->sendCustomRequest(request, QByteArray::fromStdString(method.toStdString()));
0026 
0027     return reply;
0028 }
0029 
0030 QNetworkReply *NetworkHelper::makePutRequest(QString path, QMap<QString, QString> headers, QIODevice *file)
0031 {
0032     QNetworkRequest request(QUrl(this->host + QStringLiteral("/") + path));
0033 
0034     this->setRequestAuthHeader(&request);
0035     this->setRequestHeaders(&request, headers);
0036 
0037     QNetworkReply *reply = this->networkManager->put(request, file);
0038 
0039     return reply;
0040 }
0041 
0042 void NetworkHelper::setRequestAuthHeader(QNetworkRequest *request)
0043 {
0044     QString authData = this->username + QStringLiteral(":") + this->password;
0045     QByteArray data = authData.toLocal8Bit().toBase64();
0046     QString headerData = QStringLiteral("Basic ") + QString::fromStdString(data.toStdString());
0047 
0048     request->setRawHeader("Authorization", headerData.toLocal8Bit());
0049 }
0050 
0051 void NetworkHelper::setRequestHeaders(QNetworkRequest *request, QMap<QString, QString> headers)
0052 {
0053     QMapIterator<QString, QString> headersIterator(headers);
0054 
0055     while (headersIterator.hasNext()) {
0056         headersIterator.next();
0057         request->setRawHeader(QByteArray::fromStdString(headersIterator.key().toStdString()), QByteArray::fromStdString(headersIterator.value().toStdString()));
0058     }
0059 }