In progress

This commit is contained in:
Ondřej Fischer 2019-11-12 16:16:17 +01:00
parent 0e9b20b28d
commit eb4ed9cc4c
3 changed files with 106 additions and 44 deletions

View File

@ -24,29 +24,7 @@ int main(int argc, char *argv[])
SyncManager api(parser.isSet(dryModeOption)); 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, [](){ // QObject::connect(&api, &SyncManager::error, &app, [](){

View File

@ -1,6 +1,71 @@
#include "colnodapi.h" #include "colnodapi.h"
ColnodAPI::ColnodAPI() 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();
}

View File

@ -1,15 +1,34 @@
#pragma once #pragma once
#include "serversdk/requestmanager.h" #include "serversdk/requestmanager.h"
#include "serversdk/request.h" #include "serversdk/request.h"
#include "token.h"
#include "subject.h"
class ColnodAPI: public QObject #include "serversdk/requestmanager.h"
{ #include "serversdk/request.h"
Q_OBJECT #include "serversdk/databasetable.h"
public:
ColnodAPI(); 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";
};