mirror of
https://gitlab.com/spaceti-app/integrations/acs/colnod-connector.git
synced 2026-07-12 14:20:46 +02:00
102 lines
2.8 KiB
C++
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;
|
|
};
|
|
|