#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" class RequestManager : public QObject { Q_OBJECT public: RequestManager(); 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); Response* login(); //I want it private, but unittest??? const QJsonDocument &getConfig() const {return config;} const QString &getResponse() const {return jsonResponse;} private: QNetworkReply* postRequest(const QString& endpoint, const QByteArray& json = QByteArray()); Response* postRequestReturnLogic(const QString& endpoint, const QByteArray& data = QByteArray()); QString getFromJson(const QString& json, const QString &member); QString encryptedPassword(const QString& password); QString getLoginHeader(const QString& username, const QString& hash); QByteArray makeTimestampJson(uint64_t time); QByteArray makeTokensJson(const QHash> &tokens); QByteArray makeIdsJson(const QList &ids); Response* getLoginResponse(); private slots: void onSSLError(QNetworkReply *reply, const QList &errors); void prepareAuthHeader(); signals: void successLogin(); void responseReady(); private: QNetworkAccessManager* manager = nullptr; Response* loginResponse = nullptr; QJsonDocument config; QString authHeader; QString host = "https://192.168.1.3:8443"; // QString host = "https://localhost:8080"; QString password = "spaceti1"; QString user = "spaceti"; QString token; QString jsonResponse; bool loginStatus; };