colnod-connector/src/colnod/requestmanager.h
Ondřej Fischer e9df6e58d0 All endpoints working
there may be a problem with opening json file on Git runner
2019-10-11 16:21:16 +02:00

98 lines
2.7 KiB
C++

#ifndef REQUESTMANAGER_H
#define REQUESTMANAGER_H
#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"
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(QList<QPointer<Token>> tokens);
Response* deleteTokens(QList<QString> ids);
void login(QString endpoint, QString username, QString password); //I want it private, but unittest???
const QJsonDocument &getConfig() const {return config;}
const QString &getResponse() const {return jsonResponse;}
private:
QNetworkReply* getRequest(QString endpoint);
QNetworkReply* postRequest(QString endpoints, QByteArray json);
Response* getRequestReturnLogic(QString endpoint);
Response* postRequestReturnLogic(QString endpoint, QByteArray data);
QString getFromJson(QString json, const QString &member);
QString encryptedPassword(QString password);
QString getLoginHeader(QString username, QString hash);
void prepareAuthHeader();
QByteArray makeTimeStampJson(uint64_t time);
QByteArray makeTokensJson(QList<QPointer<Token>> tokens);
QByteArray makeIdsJson(QList<QString> ids);
private slots:
void onSSLError(QNetworkReply *reply, const QList<QSslError> &errors);
signals:
void successLogin();
void responseReady();
private:
QNetworkAccessManager* manager = nullptr;
QJsonDocument config;
QString authHeader;
QString host = "https://192.168.1.3:8443";
//QString host = "http://localhost:8080";
QString password = "spaceti1";
QString user = "spaceti";
QString token;
QString jsonResponse;
bool loginStatus;
};
#endif // REQUESTMANAGER_H