mirror of
https://gitlab.com/spaceti-app/integrations/acs/colnod-connector.git
synced 2026-07-12 13:10:45 +02:00
new approach for using server-sdk
This commit is contained in:
parent
eb4ed9cc4c
commit
fcbb030ce9
@ -1 +1 @@
|
|||||||
Subproject commit 174ede92eefe414712445c519b98b880088ddf1c
|
Subproject commit b92095a459ff5829f9e1cf9d119391ddcb99ac9c
|
||||||
@ -6,6 +6,8 @@
|
|||||||
#include "serversdk/requestmanager.h"
|
#include "serversdk/requestmanager.h"
|
||||||
#include "serversdk/request.h"
|
#include "serversdk/request.h"
|
||||||
|
|
||||||
|
#include "colnodapi.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QCoreApplication app(argc, argv);
|
QCoreApplication app(argc, argv);
|
||||||
@ -21,8 +23,52 @@ int main(int argc, char *argv[])
|
|||||||
parser.addOption(dropTablesOption);
|
parser.addOption(dropTablesOption);
|
||||||
parser.addOption(createTablesOption);
|
parser.addOption(createTablesOption);
|
||||||
parser.process(app);
|
parser.process(app);
|
||||||
|
|
||||||
|
|
||||||
SyncManager api(parser.isSet(dryModeOption));
|
SyncManager api(parser.isSet(dryModeOption));
|
||||||
|
|
||||||
|
|
||||||
|
serversdk::RequestManager requestManager;
|
||||||
|
|
||||||
|
|
||||||
|
ColnodAPI colnod(&requestManager);
|
||||||
|
|
||||||
|
// Get data
|
||||||
|
colnod.downloadData();
|
||||||
|
QObject::connect(&colnod, &ColnodAPI::downloadDataFinished, [=](std::shared_ptr<ColnodData> data) {
|
||||||
|
qDebug() << "now i must have data";
|
||||||
|
qDebug() << "Tokens:" << data->deletedTokens.count();
|
||||||
|
QCoreApplication::exit();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Process data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Sync data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@ -1,24 +1,7 @@
|
|||||||
#include "colnodapi.h"
|
#include "colnodapi.h"
|
||||||
|
|
||||||
class LoginTable : 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);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ColnodAPI::ColnodAPI()
|
ColnodAPI::ColnodAPI()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan)
|
ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan)
|
||||||
@ -27,21 +10,55 @@ ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ColnodAPI::downloadData()
|
||||||
|
{
|
||||||
|
// Have to get Login
|
||||||
|
auto login = requestLogin();
|
||||||
|
connect(login.get(), &serversdk::Request::finished, this, [=](){
|
||||||
|
// Get token
|
||||||
|
AuthToken token;
|
||||||
|
token.fromJson(login->responseData());
|
||||||
|
|
||||||
|
auto data = std::make_shared<ColnodData>();
|
||||||
|
emit downloadDataFinished();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<serversdk::Request> ColnodAPI::requestLogin()
|
||||||
|
{
|
||||||
|
Q_ASSERT(mReqMan);
|
||||||
|
LoginResp login;
|
||||||
|
login.set_username(userName());
|
||||||
|
|
||||||
|
// password
|
||||||
|
QString encodedPassword = QCryptographicHash::hash(
|
||||||
|
password().toLocal8Bit(), // -> bytearray
|
||||||
|
QCryptographicHash::Sha512 // SHA 512
|
||||||
|
).toHex().toUpper();
|
||||||
|
login.set_password(encodedPassword);
|
||||||
|
|
||||||
|
auto loginRequest = composeRequest("/AaaManager/authSession", login.jsonData());
|
||||||
|
// auto loginRequest = std::make_shared<serversdk::Request>("POST", "https://192.168.1.3:8443/AaaManager/authSession", login->jsonData());
|
||||||
|
loginRequest->setUserName(login.username());
|
||||||
|
loginRequest->setPassword(login.password());
|
||||||
|
mReqMan->processRequest(loginRequest);
|
||||||
|
|
||||||
|
return loginRequest;
|
||||||
|
}
|
||||||
|
|
||||||
QList<Token> ColnodAPI::getTokensUpdated(const qint64 &time)
|
QList<Token> ColnodAPI::getTokensUpdated(const qint64 &time)
|
||||||
|
|
||||||
{
|
{
|
||||||
AuthToken token;
|
// AuthToken token;
|
||||||
token.fromJson(data);
|
// token.fromJson(data);
|
||||||
serversdk::Request request("POST", host + "/TokenManager/getTokensUpdated", getTimestampJson(time));
|
// serversdk::Request request("POST", host + "/TokenManager/getTokensUpdated", getTimestampJson(time));
|
||||||
request.setToken(mToken);
|
// request.setToken(mToken);
|
||||||
mReqMan->processRequest();
|
// mReqMan->processRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ColnodAPI::login(const QString &username, const QString &password)
|
QString ColnodAPI::login(const QString &username, const QString &password)
|
||||||
{
|
{
|
||||||
|
auto login = std::make_unique<LoginResp>();
|
||||||
|
|
||||||
auto login = std::make_unique<LoginTable>();
|
|
||||||
login->set_username(username);
|
login->set_username(username);
|
||||||
login->set_password(QCryptographicHash::hash(QString(password).toLocal8Bit(), QCryptographicHash::Sha512).toHex().toUpper());
|
login->set_password(QCryptographicHash::hash(QString(password).toLocal8Bit(), QCryptographicHash::Sha512).toHex().toUpper());
|
||||||
|
|
||||||
@ -69,3 +86,29 @@ QByteArray ColnodAPI::getTimestampJson(const qint64 &time)
|
|||||||
doc.setObject(reqBody);
|
doc.setObject(reqBody);
|
||||||
return doc.toJson();
|
return doc.toJson();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<serversdk::Request> ColnodAPI::composeRequest(const QString &endpoint, const QByteArray &data)
|
||||||
|
{
|
||||||
|
QString url = host + endpoint;
|
||||||
|
return std::make_shared<serversdk::Request>("POST", url, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ColnodAPI::password() const
|
||||||
|
{
|
||||||
|
return mPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColnodAPI::setPassword(const QString &password)
|
||||||
|
{
|
||||||
|
mPassword = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ColnodAPI::userName() const
|
||||||
|
{
|
||||||
|
return mUserName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColnodAPI::setUserName(const QString &userName)
|
||||||
|
{
|
||||||
|
mUserName = userName;
|
||||||
|
}
|
||||||
|
|||||||
@ -8,6 +8,32 @@
|
|||||||
#include "serversdk/request.h"
|
#include "serversdk/request.h"
|
||||||
#include "serversdk/databasetable.h"
|
#include "serversdk/databasetable.h"
|
||||||
|
|
||||||
|
struct ColnodData
|
||||||
|
{
|
||||||
|
QList<std::shared_ptr<Token>> updatedTokens;
|
||||||
|
QList<std::shared_ptr<Token>> updatedSubjects;
|
||||||
|
QList<std::shared_ptr<Token>> deletedTokens;
|
||||||
|
QList<std::shared_ptr<Token>> deletedSubjects;
|
||||||
|
|
||||||
|
bool isValid();
|
||||||
|
};
|
||||||
|
|
||||||
|
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 ColnodAPI: public QObject
|
class ColnodAPI: public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -15,6 +41,12 @@ public:
|
|||||||
ColnodAPI();
|
ColnodAPI();
|
||||||
ColnodAPI(serversdk::RequestManager* reqMan);
|
ColnodAPI(serversdk::RequestManager* reqMan);
|
||||||
|
|
||||||
|
void downloadData();
|
||||||
|
|
||||||
|
// New approach
|
||||||
|
std::shared_ptr<serversdk::Request> requestLogin();
|
||||||
|
|
||||||
|
|
||||||
QList<Token> getTokensUpdated(const qint64 &time);
|
QList<Token> getTokensUpdated(const qint64 &time);
|
||||||
QList<QString> getTokensDeleted(const qint64 &time);
|
QList<QString> getTokensDeleted(const qint64 &time);
|
||||||
QList<Subject> getSubjectsUpdated(const qint64 &time);
|
QList<Subject> getSubjectsUpdated(const qint64 &time);
|
||||||
@ -23,12 +55,24 @@ public:
|
|||||||
bool setTokens(const QList<Token> &tokens);
|
bool setTokens(const QList<Token> &tokens);
|
||||||
bool deleteTokens(const QList<QString> &tokenIds);
|
bool deleteTokens(const QList<QString> &tokenIds);
|
||||||
|
|
||||||
|
// Attributes
|
||||||
|
QString userName() const;
|
||||||
|
void setUserName(const QString &userName);
|
||||||
|
QString password() const;
|
||||||
|
void setPassword(const QString &password);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString login(const QString &username, const QString &password);
|
QString login(const QString &username, const QString &password);
|
||||||
QByteArray getTimestampJson(const qint64 &time);
|
QByteArray getTimestampJson(const qint64 &time);
|
||||||
|
std::shared_ptr<serversdk::Request> composeRequest(const QString &endpoint, const QByteArray &data);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void downloadDataFinished(std::shared_ptr<ColnodData> = std::shared_ptr<ColnodData>());
|
||||||
|
|
||||||
private:
|
private:
|
||||||
serversdk::RequestManager* mReqMan = nullptr;
|
serversdk::RequestManager* mReqMan = nullptr;
|
||||||
QString host = "https://192.168.1.3:8443";
|
QString host = "https://192.168.1.3:8443";
|
||||||
|
QString mUserName;
|
||||||
|
QString mPassword;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user