Ondřej Fischer 1784b33f7f fix
2019-11-26 10:57:51 +01:00

108 lines
3.0 KiB
C++

#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, set_username, "")
TABLE_PROPERTY(QString, password, set_password, "")
};
class AuthToken : public serversdk::DatabaseTable {
Q_OBJECT
TABLE_PROPERTY(QString, id, set_id, QString())
};
class Timestamp : public serversdk::DatabaseTable {
Q_OBJECT
TABLE_PROPERTY(qint64, timestamp, set_timestamp, 0)
public:
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* reqMan, const qint64 &lastSync = 0, const bool &dryMode = false, const QString &userName = "spaceti", const QString &password = "spaceti1");
void downloadData();
void processData(const 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);
bool isValid();
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);
bool checkRequest(const std::shared_ptr<serversdk::Request> &request);
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();
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 = false;
std::shared_ptr<Data> mData;
QString authToken;
qint16 amountData = 0;
qint16 amountProccessesFinished = 0;
};