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 }