forked from ondra/colnod-connector
Problem with ASSERT: "dataCount < 5" in file /Users/fbucek/Documents/Spaceti/acs/colnod-connector/src/colnod/colnodapi.cpp, line 80
116 lines
3.5 KiB
C++
116 lines
3.5 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, setUsername, "")
|
|
TABLE_PROPERTY(QString, password, setPassword, "")
|
|
};
|
|
|
|
class AuthToken : public serversdk::DatabaseTable {
|
|
Q_OBJECT
|
|
TABLE_PROPERTY(QString, id, setId, QString())
|
|
};
|
|
|
|
class Timestamp : public serversdk::DatabaseTable {
|
|
Q_OBJECT
|
|
TABLE_PROPERTY(qint64, timestamp, setTimestamp, 0)
|
|
public:
|
|
Timestamp() = default;
|
|
|
|
void setTimestamp(QDateTime time)
|
|
{
|
|
setTimestamp(time.toMSecsSinceEpoch());
|
|
}
|
|
|
|
QString toDateString()
|
|
{
|
|
return QDateTime::fromMSecsSinceEpoch(a_timestamp).toString("yyyy-MM-dd hh:mm:ss.zzz");
|
|
}
|
|
};
|
|
|
|
class ColnodAPI: public QObject
|
|
{
|
|
Q_OBJECT
|
|
friend class ColnodTest;
|
|
public:
|
|
ColnodAPI() = default;
|
|
ColnodAPI(serversdk::RequestManager* reqManconst, const bool &dryMode = false, QString userName = "spaceti", QString password = "spaceti1");
|
|
|
|
void downloadData(const qint64 &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(const std::shared_ptr<Data>& data);
|
|
Q_SLOT void isDataProcessFinished();
|
|
|
|
private:
|
|
bool saveUpdatedTokens(const std::shared_ptr<Data>& data, const QByteArray &responseData);
|
|
bool saveUpdatedSubjects(const std::shared_ptr<Data>& data, const QByteArray &responseData);
|
|
bool saveDeletedTokens(const std::shared_ptr<Data>& data, const QByteArray &responseData);
|
|
bool saveDeletedSubjects(const 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 = false;
|
|
|
|
std::shared_ptr<Data> mData;
|
|
|
|
QString authToken;
|
|
qint16 amountData = 0;
|
|
qint16 amountProccessesFinished = 0;
|
|
};
|
|
|