mirror of
https://gitlab.com/spaceti-app/integrations/acs/colnod-connector.git
synced 2026-07-12 11:50:37 +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/request.h"
|
||||
|
||||
#include "colnodapi.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication app(argc, argv);
|
||||
@ -21,8 +23,52 @@ int main(int argc, char *argv[])
|
||||
parser.addOption(dropTablesOption);
|
||||
parser.addOption(createTablesOption);
|
||||
parser.process(app);
|
||||
|
||||
|
||||
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"
|
||||
|
||||
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(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)
|
||||
|
||||
{
|
||||
AuthToken token;
|
||||
token.fromJson(data);
|
||||
serversdk::Request request("POST", host + "/TokenManager/getTokensUpdated", getTimestampJson(time));
|
||||
request.setToken(mToken);
|
||||
mReqMan->processRequest();
|
||||
// AuthToken token;
|
||||
// token.fromJson(data);
|
||||
// serversdk::Request request("POST", host + "/TokenManager/getTokensUpdated", getTimestampJson(time));
|
||||
// request.setToken(mToken);
|
||||
// mReqMan->processRequest();
|
||||
}
|
||||
|
||||
QString ColnodAPI::login(const QString &username, const QString &password)
|
||||
{
|
||||
|
||||
|
||||
auto login = std::make_unique<LoginTable>();
|
||||
auto login = std::make_unique<LoginResp>();
|
||||
login->set_username(username);
|
||||
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);
|
||||
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/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
|
||||
{
|
||||
Q_OBJECT
|
||||
@ -15,6 +41,12 @@ public:
|
||||
ColnodAPI();
|
||||
ColnodAPI(serversdk::RequestManager* reqMan);
|
||||
|
||||
void downloadData();
|
||||
|
||||
// New approach
|
||||
std::shared_ptr<serversdk::Request> requestLogin();
|
||||
|
||||
|
||||
QList<Token> getTokensUpdated(const qint64 &time);
|
||||
QList<QString> getTokensDeleted(const qint64 &time);
|
||||
QList<Subject> getSubjectsUpdated(const qint64 &time);
|
||||
@ -23,12 +55,24 @@ public:
|
||||
bool setTokens(const QList<Token> &tokens);
|
||||
bool deleteTokens(const QList<QString> &tokenIds);
|
||||
|
||||
// Attributes
|
||||
QString userName() const;
|
||||
void setUserName(const QString &userName);
|
||||
QString password() const;
|
||||
void setPassword(const QString &password);
|
||||
|
||||
private:
|
||||
QString login(const QString &username, const QString &password);
|
||||
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:
|
||||
serversdk::RequestManager* mReqMan = nullptr;
|
||||
QString host = "https://192.168.1.3:8443";
|
||||
QString mUserName;
|
||||
QString mPassword;
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user