summaryrefslogtreecommitdiffstats
path: root/logic/net
diff options
context:
space:
mode:
authorJan Dalheimer <jan@dalheimer.de>2015-05-28 19:38:29 +0200
committerPetr Mrázek <peterix@gmail.com>2015-06-06 21:23:05 +0200
commit3a8b238052163952831fb5924b2483a375e86ebd (patch)
treeab120b4fac3a5345a20e7a09e1e7477e67d9ed6f /logic/net
parent161dc66c2c8d5f973ee69dab36c3969a7efd7495 (diff)
downloadMultiMC-3a8b238052163952831fb5924b2483a375e86ebd.tar
MultiMC-3a8b238052163952831fb5924b2483a375e86ebd.tar.gz
MultiMC-3a8b238052163952831fb5924b2483a375e86ebd.tar.lz
MultiMC-3a8b238052163952831fb5924b2483a375e86ebd.tar.xz
MultiMC-3a8b238052163952831fb5924b2483a375e86ebd.zip
NOISSUE Various changes from multiauth that are unrelated to it
Diffstat (limited to 'logic/net')
-rw-r--r--logic/net/CacheDownload.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/logic/net/CacheDownload.h b/logic/net/CacheDownload.h
index 49d2d99f..7f95a69d 100644
--- a/logic/net/CacheDownload.h
+++ b/logic/net/CacheDownload.h
@@ -20,6 +20,29 @@
#include <QCryptographicHash>
#include <QSaveFile>
+class INetworkValidator
+{
+public:
+ virtual ~INetworkValidator() {}
+
+ virtual void validate(const QByteArray &data) = 0;
+};
+class JsonValidator : public INetworkValidator
+{
+public:
+ void validate(const QByteArray &data) override;
+};
+class MD5HashValidator : public INetworkValidator
+{
+public:
+ explicit MD5HashValidator(const QByteArray &expected)
+ : m_expected(expected) {}
+ void validate(const QByteArray &data) override;
+
+private:
+ QByteArray m_expected;
+};
+
typedef std::shared_ptr<class CacheDownload> CacheDownloadPtr;
class CacheDownload : public NetAction
{
@@ -33,6 +56,8 @@ private:
/// the hash-as-you-download
QCryptographicHash md5sum;
+ INetworkValidator *m_validator = nullptr;
+
bool wroteAnyData = false;
public:
@@ -46,6 +71,10 @@ public:
{
return m_target_path;
}
+ void setValidator(INetworkValidator *validator)
+ {
+ m_validator = validator;
+ }
protected
slots:
virtual void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);