1 /*!
2  * \brief Update data implementation for application version.
3  *
4  * \copyright Copyright (c) 2016-2021 Governikus GmbH & Co. KG, Germany
5  */
6 
7 #pragma once
8 
9 #include "GlobalStatus.h"
10 
11 #include <QCryptographicHash>
12 #include <QDateTime>
13 #include <QJsonObject>
14 #include <QString>
15 #include <QUrl>
16 #include <QVersionNumber>
17 
18 namespace governikus
19 {
20 
21 class AppUpdateData
22 {
23 	private:
24 		QVersionNumber mMinOsVersion;
25 		QDateTime mDate;
26 		QString mVersion;
27 		QUrl mUrl;
28 		int mSize;
29 		QUrl mChecksumUrl;
30 		QUrl mNotesUrl;
31 		QString mNotes;
32 		QCryptographicHash::Algorithm mChecksumAlgorithm;
33 		QByteArray mChecksum;
34 		bool mChecksumValid;
35 		QString mUpdatePackagePath;
36 		GlobalStatus mParsingResult;
37 
38 		static bool checkPlatformObject(const QJsonObject& pJson);
39 		static bool isPlatform(const QString& pPlatform);
40 		void verifyChecksum();
41 
42 	public:
43 		explicit AppUpdateData(const GlobalStatus& pParsingResult = GlobalStatus::Code::No_Error);
44 		explicit AppUpdateData(const QByteArray& pData);
45 
46 		[[nodiscard]] bool isValid() const;
47 		[[nodiscard]] const GlobalStatus& getParsingResult() const;
48 
49 		[[nodiscard]] bool isCompatible() const;
50 		[[nodiscard]] const QDateTime& getDate() const;
51 		[[nodiscard]] const QString& getVersion() const;
52 		[[nodiscard]] const QUrl& getUrl() const;
53 		[[nodiscard]] int getSize() const;
54 		[[nodiscard]] const QUrl& getChecksumUrl() const;
55 		[[nodiscard]] const QUrl& getNotesUrl() const;
56 
57 		void setNotes(const QString& pNotes);
58 		[[nodiscard]] const QString& getNotes() const;
59 
60 		void setChecksum(const QByteArray& pChecksum, QCryptographicHash::Algorithm pAlgorithm);
61 		[[nodiscard]] const QByteArray& getChecksum() const;
62 		[[nodiscard]] bool isChecksumValid() const;
63 
64 		void setUpdatePackagePath(const QString& pFile);
65 		[[nodiscard]] QString getUpdatePackagePath() const;
66 };
67 
68 
69 } // namespace governikus
70