1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-02-03 10:25:02 +00:00

Log error message in DownloadHandlerImpl class

This commit is contained in:
Chocobo1 2021-10-08 11:01:54 +08:00
parent 6b49323f05
commit 6b06cc9216
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C

View File

@ -32,6 +32,7 @@
#include <QTemporaryFile> #include <QTemporaryFile>
#include <QUrl> #include <QUrl>
#include "base/3rdparty/expected.hpp"
#include "base/utils/fs.h" #include "base/utils/fs.h"
#include "base/utils/gzip.h" #include "base/utils/gzip.h"
#include "base/utils/io.h" #include "base/utils/io.h"
@ -41,18 +42,14 @@ const int MAX_REDIRECTIONS = 20; // the common value for web browsers
namespace namespace
{ {
bool saveToFile(const QByteArray &replyData, QString &filePath) nonstd::expected<QString, QString> saveToTempFile(const QByteArray &data)
{ {
if (!filePath.isEmpty())
return Utils::IO::saveToFile(filePath, replyData).has_value();
QTemporaryFile file {Utils::Fs::tempPath()}; QTemporaryFile file {Utils::Fs::tempPath()};
if (!file.open() || (file.write(replyData) != replyData.length()) || !file.flush()) if (!file.open() || (file.write(data) != data.length()) || !file.flush())
return false; return nonstd::make_unexpected(file.errorString());
file.setAutoRemove(false); file.setAutoRemove(false);
filePath = file.fileName(); return file.fileName();
return true;
} }
} }
@ -130,11 +127,23 @@ void DownloadHandlerImpl::processFinishedDownload()
if (m_downloadRequest.saveToFile()) if (m_downloadRequest.saveToFile())
{ {
QString filePath {m_downloadRequest.destFileName()}; const QString destinationPath = m_downloadRequest.destFileName();
if (saveToFile(m_result.data, filePath)) if (destinationPath.isEmpty())
m_result.filePath = filePath; {
const nonstd::expected<QString, QString> result = saveToTempFile(m_result.data);
if (result)
m_result.filePath = result.value();
else else
setError(tr("I/O Error")); setError(tr("I/O Error: %1").arg(result.error()));
}
else
{
const nonstd::expected<void, QString> result = Utils::IO::saveToFile(destinationPath, m_result.data);
if (result)
m_result.filePath = destinationPath;
else
setError(tr("I/O Error: %1").arg(result.error()));
}
} }
finish(); finish();