forked from ondra/colnod-connector
In progress
This commit is contained in:
parent
0e9b20b28d
commit
eb4ed9cc4c
@ -24,29 +24,7 @@ int main(int argc, char *argv[])
|
||||
SyncManager api(parser.isSet(dryModeOption));
|
||||
|
||||
//
|
||||
serversdk::RequestManager reqMan;
|
||||
QJsonObject reqBody;
|
||||
QByteArray hash(QCryptographicHash::hash(QString("spaceti1").toLocal8Bit(), QCryptographicHash::Sha512).toHex().toUpper());
|
||||
reqBody.insert("password", QJsonValue::fromVariant(hash));
|
||||
reqBody.insert("username", "spaceti");
|
||||
QJsonDocument doc(reqBody);
|
||||
auto loginRequest = std::make_shared<serversdk::Request>("POST", "https://192.168.1.3:8443/AaaManager/authSession", doc.toJson());
|
||||
loginRequest->setUserName("spaceti");
|
||||
loginRequest->setPassword(hash);
|
||||
reqMan.processRequest(loginRequest);
|
||||
QObject::connect(loginRequest.get(), &serversdk::Request::finished, [=](){
|
||||
if (loginRequest->networkReply()->error()) {
|
||||
qDebug() << loginRequest->networkReply()->errorString();
|
||||
qDebug() << "response data:" << loginRequest->responseData();
|
||||
if (!loginRequest->responseData().isEmpty() && !loginRequest->responseData().contains("error")){
|
||||
auto jsonDoc = QJsonDocument::fromJson(loginRequest->responseData());
|
||||
QString token = jsonDoc.object()["id"].toString();
|
||||
}
|
||||
else {
|
||||
qDebug() << "Login failed.";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
|
||||
// QObject::connect(&api, &SyncManager::error, &app, [](){
|
||||
|
||||
@ -1,6 +1,71 @@
|
||||
#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)
|
||||
:mReqMan(reqMan)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
QString ColnodAPI::login(const QString &username, const QString &password)
|
||||
{
|
||||
|
||||
|
||||
auto login = std::make_unique<LoginTable>();
|
||||
login->set_username(username);
|
||||
login->set_password(QCryptographicHash::hash(QString(password).toLocal8Bit(), QCryptographicHash::Sha512).toHex().toUpper());
|
||||
|
||||
serversdk::RequestManager reqMan;
|
||||
reqMan.setIgnoreSsl(true);
|
||||
|
||||
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());
|
||||
reqMan.processRequest(loginRequest);
|
||||
|
||||
QObject::connect(loginRequest.get(), &serversdk::Request::finished, [=](){
|
||||
auto data = loginRequest->responseData();
|
||||
|
||||
AuthToken token;
|
||||
token.fromJson(data);
|
||||
return token.idWithoutCurlyBraces();
|
||||
});
|
||||
}
|
||||
|
||||
QByteArray ColnodAPI::getTimestampJson(const qint64 &time)
|
||||
{
|
||||
QJsonObject reqBody = {{"timestamp",QJsonValue(time)}};
|
||||
QJsonDocument doc;
|
||||
doc.setObject(reqBody);
|
||||
return doc.toJson();
|
||||
}
|
||||
|
||||
@ -2,14 +2,33 @@
|
||||
|
||||
#include "serversdk/requestmanager.h"
|
||||
#include "serversdk/request.h"
|
||||
|
||||
#include "token.h"
|
||||
#include "subject.h"
|
||||
#include "serversdk/requestmanager.h"
|
||||
#include "serversdk/request.h"
|
||||
#include "serversdk/databasetable.h"
|
||||
|
||||
class ColnodAPI: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ColnodAPI();
|
||||
ColnodAPI(serversdk::RequestManager* reqMan);
|
||||
|
||||
QList<Token> getTokensUpdated(const qint64 &time);
|
||||
QList<QString> getTokensDeleted(const qint64 &time);
|
||||
QList<Subject> getSubjectsUpdated(const qint64 &time);
|
||||
QList<QString> getSubjectsDeleted(const qint64 &time);
|
||||
|
||||
bool setTokens(const QList<Token> &tokens);
|
||||
bool deleteTokens(const QList<QString> &tokenIds);
|
||||
|
||||
private:
|
||||
QString login(const QString &username, const QString &password);
|
||||
QByteArray getTimestampJson(const qint64 &time);
|
||||
|
||||
private:
|
||||
serversdk::RequestManager* mReqMan = nullptr;
|
||||
QString host = "https://192.168.1.3:8443";
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user