#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "token.h" #include "response.h" #include "logger.h" class RequestManager : public QObject { Q_OBJECT public: friend class UnitTest; friend class ComplexTest; RequestManager(); // this should be in ColnodAPI class BEGIN Response* getSubjects(); Response* getTokens(); Response* getTokenSubject(); Response* getSubjectsUpdated(uint64_t time); Response* getSubjectsDeleted(uint64_t time); Response* getTokensUpdated(uint64_t time); Response* getTokensDeleted(uint64_t time); Response* getAccessGroups(); Response* getAccessGroupsUpdated(uint64_t time); Response* getAccessGroupsDeleted(uint64_t time); Response* getAccessGroupMembership(); Response* getAccessGroupMembershipUpdated(uint64_t time); Response* getAccessGroupMembershipDeleted(uint64_t time); Response* setTokens(const QHash> &tokens); Response* deleteTokens(const QList &ids); // END private: // should be public QNetworkReply* postRequest(const QString& endpoint, const QByteArray& json = QByteArray()); Response* postRequestReturnLogic(const QString& endpoint, const QByteArray& data = QByteArray()); std::shared_ptr login(); std::shared_ptr getLoginResponse(); QString getFromJson(const QString& json, const QString &member); QString encryptedPassword(const QString& password); QString getLoginHeader(const QString& username, const QString& hash); // in colnod api as well QByteArray makeTimestampJson(uint64_t time); QByteArray makeTokensJson(const QHash> &tokens); // maybe better to be in Token class QByteArray makeIdsJson(const QList &ids); // Entity class private slots: void onSSLError(QNetworkReply *reply, const QList &errors); //void onReplyFinished(QNetworkReply *reply); void prepareAuthHeader(); signals: void successLogin(); void responseReady(); void error(); private: std::unique_ptr manager; std::shared_ptr loginResponse; QJsonDocument config; QString authHeader; const QString host = "https://192.168.1.3:8443"; //QString host = "https://localhost:8080"; const QString password = "spaceti1"; const QString user = "spaceti"; QString jsonResponse; bool loginStatus = false; };