mirror of
https://gitlab.com/spaceti-app/integrations/acs/colnod-connector.git
synced 2026-07-12 16:30:39 +02:00
122 lines
3.6 KiB
C++
122 lines
3.6 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:
|
|
Timestamp() = default;
|
|
explicit Timestamp(const Timestamp &time)
|
|
{
|
|
this->set_timestamp(time.timestamp());
|
|
}
|
|
explicit Timestamp(qint64 time)
|
|
{
|
|
set_timestamp(time);
|
|
}
|
|
explicit Timestamp(QDateTime time)
|
|
{
|
|
set_timestamp(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);
|
|
void processData(const std::shared_ptr<Data> &data);
|
|
|
|
// New approach
|
|
std::shared_ptr<serversdk::Request> requestLogin();
|
|
|
|
|
|
std::shared_ptr<serversdk::Request> getTokensUpdated(const Timestamp &time);
|
|
std::shared_ptr<serversdk::Request> getTokensDeleted(const Timestamp &time);
|
|
std::shared_ptr<serversdk::Request> getSubjectsUpdated(const Timestamp &time);
|
|
std::shared_ptr<serversdk::Request> getSubjectsDeleted(const Timestamp &time);
|
|
|
|
std::shared_ptr<serversdk::Request> setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens);
|
|
std::shared_ptr<serversdk::Request> 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(std::shared_ptr<Data> data);
|
|
Q_SLOT void isDataProcessFinished();
|
|
|
|
private:
|
|
void saveUpdatedTokens(std::shared_ptr<Data> data, const QByteArray &responseData);
|
|
void saveUpdatedSubjects(std::shared_ptr<Data> data, const QByteArray &responseData);
|
|
void saveDeletedTokens(std::shared_ptr<Data> data, const QByteArray &responseData);
|
|
void saveDeletedSubjects(std::shared_ptr<Data> data, 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 = true;
|
|
|
|
std::shared_ptr<Data> mData;
|
|
|
|
QString authToken;
|
|
qint16 amountData = 0;
|
|
qint16 amountProccessesFinished = 0;
|
|
};
|
|
|