temp changes,
Some checks failed
buildbot/DocsGenerator Build finished.
buildbot/AndroidBuilder_v8Qt6 Build finished.
buildbot/LinuxCMakeBuilderQt6 Build finished.

This commit is contained in:
Andrei Yankovich 2024-12-08 20:07:29 +01:00
parent 16367526d3
commit 55ad2e9629
2 changed files with 66 additions and 7 deletions

View File

@ -50,9 +50,7 @@ void IBot::incomeNewUpdate(const QSharedPointer<iUpdate> &message) {
}
}
QFuture<QByteArray>
IBot::sendRequest(const QSharedPointer<iRequest> &rquest) {
QNetworkReply* IBot::sendRquestImpl(const QSharedPointer<iRequest> &rquest) {
if (!rquest)
return {};
@ -73,10 +71,10 @@ IBot::sendRequest(const QSharedPointer<iRequest> &rquest) {
}
case iRequest::Post:
// req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
// reply = m_nam.post(req, params.toByteArray());
// req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
// reply = m_nam.post(req, params.toByteArray());
// break;
// break;
case iRequest::Upload:
QNetworkRequest netRequest(url);
@ -91,6 +89,14 @@ IBot::sendRequest(const QSharedPointer<iRequest> &rquest) {
break;
}
return networkReplay;
}
QFuture<QByteArray>
IBot::sendRequest(const QSharedPointer<iRequest> &rquest) {
QNetworkReply* networkReplay = sendRquestImpl(rquest);
if (!networkReplay) {
return {};
}
@ -124,6 +130,49 @@ IBot::sendRequest(const QSharedPointer<iRequest> &rquest) {
return promise->future();
}
QFuture<QByteArray> IBot::sendRequest(const QSharedPointer<iRequest> &rquest, const QString &pathToResult) {
auto&& file = QSharedPointer<QFile>::create();
file->open(QIODevice::WriteOnly | QIODevice::Truncate);
QNetworkReply* networkReplay = sendRquestImpl(rquest);
if (!networkReplay) {
return {};
}
auto&& promise = QSharedPointer<QPromise<QByteArray>>::create();
networkReplay->connect(networkReplay, &QNetworkReply::finished, [promise, pathToResult](){
promise->addResult(pathToResult.toUtf8()); // wil not work with UTF 8 path names
promise->finish();
});
networkReplay->connect(networkReplay, &QNetworkReply::readyRead, [networkReplay, promise, pathToResult](){
promise->addResult(networkReplay->readAll());
});
networkReplay->connect(networkReplay, &QNetworkReply::errorOccurred, [networkReplay, promise](QNetworkReply::NetworkError ){
promise->setException(HttpException(networkReplay->error(), networkReplay->errorString().toLatin1()));
promise->finish();
});
auto && setProggress = [promise](qint64 bytesCurrent, qint64 bytesTotal){
if (promise->future().progressMaximum() != bytesTotal)
promise->setProgressRange(0, bytesTotal);
promise->setProgressValue(bytesCurrent);
};
networkReplay->connect(networkReplay, &QNetworkReply::downloadProgress, setProggress);
networkReplay->connect(networkReplay, &QNetworkReply::uploadProgress, setProggress);
return promise->future();
}
void IBot::markUpdateAsProcessed(const QSharedPointer<iUpdate> &message) {
_notProcessedUpdates.remove(message->updateId());
}

View File

@ -164,7 +164,6 @@ protected:
return ptr;
}
/**
* @brief makeUrl This method prepare a prefix url for http requests.
* @param request - This is request object for that will be prepared url.
@ -180,6 +179,16 @@ protected:
QFuture<QByteArray>
sendRequest(const QSharedPointer<iRequest>& rquest);
/**
* @brief sendRequest This method sent custom requests to the server.
* @param rquest This is message that will be sent to server.
* @return future pointer to the request replay.
* @note This is same as a default implementaion execpt save data location,
* this method will create new file that located @a pathToResult and save all received data to this location.
*/
QFuture<QByteArray>
sendRequest(const QSharedPointer<iRequest>& rquest, const QString& pathToResult);
/**
* @brief setToken This is setter of the IBot::token value.
* @param newToken This is new value of the token.
@ -234,6 +243,7 @@ signals:
void sigStopRequire();
private:
QNetworkReply *sendRquestImpl(const QSharedPointer<iRequest> &rquest);
QByteArray _token;
QString _name;