#ifndef CONDUITCLIENT_H
#define CONDUITCLIENT_H

#include <QtCore/QObject>
#include <QString>
#include <QJsonObject>

class QNetworkAccessManager;
class QNetworkReply;
class QEventLoop;

class ConduitClient: public QObject {
    Q_OBJECT

public:
    ConduitClient(const QString& uri, const QString& user, const QString& token, const QString& sertificate);
    ~ConduitClient();
    QJsonObject request(const QString& method, const QJsonObject& json);
    bool createSession();

public slots:
    void replyReceived(QNetworkReply*);

private:
    QString m_URI;
    QString m_user;
    QString m_conduitToken;
    QString m_SessionKey;
    int m_ConnectionID;
    QString m_certificate;

    QNetworkAccessManager* m_manager;
    QNetworkReply* m_serverReply;
    QEventLoop* m_loopWaitingResponce;

    QJsonObject requestRaw(const QString& method, const QJsonObject& json);


//    private int? ;
//    ClientName
//    ClientVersion
//    User
// Certificate


};

#endif // CONDUITCLIENT_H
