aboutsummaryrefslogtreecommitdiff
path: root/api/logic/net/FileSink.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2021-07-25 19:11:59 +0200
committerPetr Mrázek <peterix@gmail.com>2021-07-25 19:50:44 +0200
commit20b9f2b42a3b58b6081af271774fbcc34025dccb (patch)
tree064fa59facb3357139b47bd4e60bfc8edb35ca11 /api/logic/net/FileSink.cpp
parentdd133680858351e3e07690e286882327a4f42ba5 (diff)
downloadPrismLauncher-20b9f2b42a3b58b6081af271774fbcc34025dccb.tar.gz
PrismLauncher-20b9f2b42a3b58b6081af271774fbcc34025dccb.tar.bz2
PrismLauncher-20b9f2b42a3b58b6081af271774fbcc34025dccb.zip
NOISSUE Flatten gui and logic libraries into MultiMC
Diffstat (limited to 'api/logic/net/FileSink.cpp')
-rw-r--r--api/logic/net/FileSink.cpp115
1 files changed, 0 insertions, 115 deletions
diff --git a/api/logic/net/FileSink.cpp b/api/logic/net/FileSink.cpp
deleted file mode 100644
index 8b3e917d..00000000
--- a/api/logic/net/FileSink.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#include "FileSink.h"
-#include <QFile>
-#include <QFileInfo>
-#include "Env.h"
-#include "FileSystem.h"
-
-namespace Net {
-
-FileSink::FileSink(QString filename)
- :m_filename(filename)
-{
- // nil
-}
-
-FileSink::~FileSink()
-{
- // nil
-}
-
-JobStatus FileSink::init(QNetworkRequest& request)
-{
- auto result = initCache(request);
- if(result != Job_InProgress)
- {
- return result;
- }
- // create a new save file and open it for writing
- if (!FS::ensureFilePathExists(m_filename))
- {
- qCritical() << "Could not create folder for " + m_filename;
- return Job_Failed;
- }
- wroteAnyData = false;
- m_output_file.reset(new QSaveFile(m_filename));
- if (!m_output_file->open(QIODevice::WriteOnly))
- {
- qCritical() << "Could not open " + m_filename + " for writing";
- return Job_Failed;
- }
-
- if(initAllValidators(request))
- return Job_InProgress;
- return Job_Failed;
-}
-
-JobStatus FileSink::initCache(QNetworkRequest &)
-{
- return Job_InProgress;
-}
-
-JobStatus FileSink::write(QByteArray& data)
-{
- if (!writeAllValidators(data) || m_output_file->write(data) != data.size())
- {
- qCritical() << "Failed writing into " + m_filename;
- m_output_file->cancelWriting();
- m_output_file.reset();
- wroteAnyData = false;
- return Job_Failed;
- }
- wroteAnyData = true;
- return Job_InProgress;
-}
-
-JobStatus FileSink::abort()
-{
- m_output_file->cancelWriting();
- failAllValidators();
- return Job_Failed;
-}
-
-JobStatus FileSink::finalize(QNetworkReply& reply)
-{
- bool gotFile = false;
- QVariant statusCodeV = reply.attribute(QNetworkRequest::HttpStatusCodeAttribute);
- bool validStatus = false;
- int statusCode = statusCodeV.toInt(&validStatus);
- if(validStatus)
- {
- // this leaves out 304 Not Modified
- gotFile = statusCode == 200 || statusCode == 203;
- }
- // if we wrote any data to the save file, we try to commit the data to the real file.
- // if it actually got a proper file, we write it even if it was empty
- if (gotFile || wroteAnyData)
- {
- // ask validators for data consistency
- // we only do this for actual downloads, not 'your data is still the same' cache hits
- if(!finalizeAllValidators(reply))
- return Job_Failed;
- // nothing went wrong...
- if (!m_output_file->commit())
- {
- qCritical() << "Failed to commit changes to " << m_filename;
- m_output_file->cancelWriting();
- return Job_Failed;
- }
- }
- // then get rid of the save file
- m_output_file.reset();
-
- return finalizeCache(reply);
-}
-
-JobStatus FileSink::finalizeCache(QNetworkReply &)
-{
- return Job_Finished;
-}
-
-bool FileSink::hasLocalData()
-{
- QFileInfo info(m_filename);
- return info.exists() && info.size() != 0;
-}
-}