forked from ondra/colnod-connector
96 lines
2.7 KiB
C++
96 lines
2.7 KiB
C++
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <QNetworkReply>
|
|
#include <QNetworkAccessManager>
|
|
#include <QNetworkRequest>
|
|
#include <QJsonDocument>
|
|
#include <QJsonObject>
|
|
#include <qcoreapplication.h>
|
|
#include <qnetworkreply.h>
|
|
#include <QByteArray>
|
|
#include <QJsonDocument>
|
|
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
#include <QJsonParseError>
|
|
#include <QFile>
|
|
#include <QString>
|
|
#include <QMultiMap>
|
|
#include <QPointer>
|
|
#include <QDir>
|
|
#include <QSslError>
|
|
#include <QPair>
|
|
|
|
|
|
#include "token.h"
|
|
#include "response.h"
|
|
#include "logger.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<QString, QPointer<Token>> &tokens);
|
|
Response* deleteTokens(const QList<QString> &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<QString, QPointer<Token>> &tokens);
|
|
QByteArray makeIdsJson(const QList<QString> &ids);
|
|
Response* getLoginResponse();
|
|
|
|
private slots:
|
|
void onSSLError(QNetworkReply *reply, const QList<QSslError> &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;
|
|
|
|
};
|