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