#pragma once #include "serversdk/requestmanager.h" #include "serversdk/request.h" #include "serversdk/databasetable.h" #include "QDateTime" #include "data.h" class LoginResp : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QString, username, set_username, "") TABLE_PROPERTY(QString, password, set_password, "") }; class AuthToken : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QUuid, id, set_id, QUuid()) public: QString idWithoutCurlyBraces() { return a_id.toString().mid(1, 36); } }; class Timestamp : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(qint64, timestamp, set_timestamp, 0) QString toDateString() { return QDateTime::fromMSecsSinceEpoch(a_timestamp).toString("yyyy-MM-dd hh:mm:ss.zzz"); } }; class ColnodAPI: public QObject { Q_OBJECT public: ColnodAPI(); ColnodAPI(serversdk::RequestManager* reqMan, qint64 lastSync = 0, QString userName = "spaceti", QString password = "spaceti1"); void downloadData(); void processData(std::shared_ptr data); // New approach std::shared_ptr requestLogin(); void getTokensUpdated(const Timestamp &time); void getTokensDeleted(const Timestamp &time); void getSubjectsUpdated(const Timestamp &time); void getSubjectsDeleted(const Timestamp &time); void setTokens(const QHash> &tokens); void 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); private: Q_SLOT void areDataReady(); Q_SLOT void isDataProcessFinished(); private: void saveUpdatedTokens(const QByteArray &responseData); void saveUpdatedSubjects(const QByteArray &responseData); void saveDeletedTokens(const QByteArray &responseData); void saveDeletedSubjects(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); signals: void downloadDataFinished(std::shared_ptr = std::shared_ptr()); void partOfDataReady(std::shared_ptr = std::shared_ptr()); void partOfDataProcessFinished(); void dataProcessFinished(); private: serversdk::RequestManager* mReqMan = nullptr; QString mHost = "https://192.168.1.3:8443"; QString mUserName; QString mPassword; Timestamp mLastSync; std::shared_ptr data; QString authToken; qint16 amountData = 0; qint16 amountProccessesFinished = 0; };