#pragma once #include "serversdk/requestmanager.h" #include "serversdk/request.h" #include "serversdk/databasetable.h" #include "serversdk/logger.h" #include "data.h" Q_DECLARE_LOGGING_CATEGORY(colnod) class LoginResp : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QString, username, setUsername, "") TABLE_PROPERTY(QString, password, setPassword, "") }; class AuthToken : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QString, id, setId, QString()) }; class Timestamp : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(qint64, timestamp, setTimestamp, 0) public: Timestamp() = default; void setTimestamp(QDateTime time) { setTimestamp(time.toMSecsSinceEpoch()); } QString toDateString() { return QDateTime::fromMSecsSinceEpoch(a_timestamp).toString("yyyy-MM-dd hh:mm:ss.zzz"); } }; class ColnodAPI: public QObject { Q_OBJECT public: ColnodAPI() = default; ColnodAPI(serversdk::RequestManager* reqManconst, const bool &dryMode = false, const QString &userName = "spaceti", const QString &password = "spaceti1"); void downloadData(const Timestamp &time); bool processData(const std::shared_ptr &data); // New approach std::shared_ptr requestLogin(); std::shared_ptr getTokensUpdated(const Timestamp &time); std::shared_ptr getTokensDeleted(const Timestamp &time); std::shared_ptr getSubjectsUpdated(const Timestamp &time); std::shared_ptr getSubjectsDeleted(const Timestamp &time); std::shared_ptr setTokens(const QHash> &tokens); std::shared_ptr deleteTokens(const QList &tokenIds); // Attributes QString userName() const; void setUserName(const QString &userName); QString password() const; void setPassword(const QString &password); qint64 lastSync() const; void setlastSync(const qint64 &lastSync); bool isValid(); private: Q_SLOT void areDataReady(std::shared_ptr data); Q_SLOT void isDataProcessFinished(); private: void saveUpdatedTokens(std::shared_ptr data, const QByteArray &responseData); void saveUpdatedSubjects(std::shared_ptr data, const QByteArray &responseData); void saveDeletedTokens(std::shared_ptr data, const QByteArray &responseData); void saveDeletedSubjects(std::shared_ptr data, const QByteArray &responseData); void newData(); bool checkResponse(const QByteArray &responseData); QByteArray getTimestampJson(const qint64 &time); std::shared_ptr composeRequest(const QString &endpoint, const QByteArray &data); bool checkRequest(const std::shared_ptr &request); signals: void downloadDataFinished(std::shared_ptr = std::shared_ptr()); void partOfDataReady(std::shared_ptr = std::shared_ptr()); void partOfDataProcessFinished(); void dataProcessFinished(); void error(); private: serversdk::RequestManager* mReqMan = nullptr; QString mHost = "https://192.168.1.3:8443"; QString mUserName; QString mPassword; Timestamp mLastSync; bool mDryMode = false; bool mValid = true; std::shared_ptr mData; QString authToken; qint16 amountData = 0; qint16 amountProccessesFinished = 0; };