File indexing completed on 2024-05-12 04:46:02

0001 #include "NetworkHelper.hpp"
0002 
0003 NetworkHelper::NetworkHelper(QString host, QString username, QString password) {
0004   this->host = host;
0005   this->username = username;
0006   this->password = password;
0007 
0008   this->networkManager = new QNetworkAccessManager(this);
0009 }
0010 
0011 QNetworkReply* NetworkHelper::makeRequest(QString method, QString path,
0012                                           QMap<QString, QString> headers) {
0013   QNetworkRequest request(QUrl(this->host + "/" + path));
0014 
0015   this->setRequestAuthHeader(&request);
0016   this->setRequestHeaders(&request, headers);
0017 
0018   QNetworkReply* reply = this->networkManager->sendCustomRequest(
0019       request, QByteArray::fromStdString(method.toStdString()));
0020 
0021   return reply;
0022 }
0023 
0024 QNetworkReply* NetworkHelper::makePutRequest(QString path,
0025                                              QMap<QString, QString> headers,
0026                                              QIODevice* file) {
0027   QNetworkRequest request(QUrl(this->host + "/" + path));
0028 
0029   this->setRequestAuthHeader(&request);
0030   this->setRequestHeaders(&request, headers);
0031 
0032   QNetworkReply* reply = this->networkManager->put(request, file);
0033 
0034   return reply;
0035 }
0036 
0037 QNetworkReply* NetworkHelper::makeRequest(QString method,
0038                                           QMap<QString, QString> headers) {
0039   return this->makeRequest(method, QUrl(this->host), headers, "");
0040 }
0041 
0042 QNetworkReply* NetworkHelper::makeRequest(QString method,
0043                                           QMap<QString, QString> headers,
0044                                           QString body) {
0045   return this->makeRequest(method, QUrl(this->host), headers, body);
0046 }
0047 
0048 QNetworkReply* NetworkHelper::makeRequest(QString method, QUrl path,
0049                                           QMap<QString, QString> headers,
0050                                           QString body) {
0051   QUrl url(this->host);
0052   QString port = url.port() != -1 ? ":" + QString::number(url.port()) : "";
0053   QUrl requestUrl(url.scheme() + "://" + url.host() + port + "/" + path.path());
0054 
0055   QNetworkRequest request(requestUrl);
0056 
0057   this->setRequestAuthHeader(&request);
0058   this->setRequestHeaders(&request, headers);
0059 
0060   QNetworkReply* reply = this->networkManager->sendCustomRequest(
0061       request, QByteArray::fromStdString(method.toStdString()),
0062       QByteArray::fromStdString(body.toStdString()));
0063 
0064   return reply;
0065 }
0066 
0067 QNetworkReply* NetworkHelper::makePutRequest(QMap<QString, QString> headers,
0068                                              QIODevice* file) {
0069   QNetworkRequest request(QUrl(this->host));
0070 
0071   this->setRequestAuthHeader(&request);
0072   this->setRequestHeaders(&request, headers);
0073 
0074   QNetworkReply* reply = this->networkManager->put(request, file);
0075 
0076   return reply;
0077 }
0078 
0079 void NetworkHelper::setRequestAuthHeader(QNetworkRequest* request) {
0080   QString authData = this->username + ":" + this->password;
0081   QByteArray data = authData.toLocal8Bit().toBase64();
0082   QString headerData = "Basic " + data;
0083 
0084   request->setRawHeader("Authorization", headerData.toLocal8Bit());
0085 }
0086 
0087 void NetworkHelper::setRequestHeaders(QNetworkRequest* request,
0088                                       QMap<QString, QString> headers) {
0089   QMapIterator<QString, QString> headersIterator(headers);
0090 
0091   while (headersIterator.hasNext()) {
0092     headersIterator.next();
0093     request->setRawHeader(
0094         QByteArray::fromStdString(headersIterator.key().toStdString()),
0095         QByteArray::fromStdString(headersIterator.value().toStdString()));
0096   }
0097 }