diff --git a/src/app/main.cpp b/src/app/main.cpp index ea5b298..71fed8d 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -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("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, [](){ diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index 8ac672d..4e051b5 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -1,6 +1,71 @@ -#include "colnodapi.h" - -ColnodAPI::ColnodAPI() -{ - -} +#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 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(); + 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("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(); +} diff --git a/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index c9d9848..66d9250 100644 --- a/src/colnod/colnodapi.h +++ b/src/colnod/colnodapi.h @@ -1,15 +1,34 @@ -#pragma once - -#include "serversdk/requestmanager.h" -#include "serversdk/request.h" - - -class ColnodAPI: public QObject -{ - Q_OBJECT -public: - ColnodAPI(); - - -}; - +#pragma once + +#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 getTokensUpdated(const qint64 &time); + QList getTokensDeleted(const qint64 &time); + QList getSubjectsUpdated(const qint64 &time); + QList getSubjectsDeleted(const qint64 &time); + + bool setTokens(const QList &tokens); + bool deleteTokens(const QList &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"; +}; +