2019-11-18 17:07:39 +01:00

102 lines
2.8 KiB
C++

#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> data);
// New approach
std::shared_ptr<serversdk::Request> 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<QString, std::shared_ptr<Token>> &tokens);
void deleteTokens(const QList<QString> &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<serversdk::Request> composeRequest(const QString &endpoint, const QByteArray &data);
signals:
void downloadDataFinished(std::shared_ptr<Data> = std::shared_ptr<Data>());
void partOfDataReady(std::shared_ptr<Data> = std::shared_ptr<Data>());
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> data;
QString authToken;
qint16 amountData = 0;
qint16 amountProccessesFinished = 0;
};