Files
BeetRound/libs/BeetRoundCore/network/servercommunicator.h

66 lines
2.0 KiB
C++

#ifndef SERVERCOMMUNICATOR_H
#define SERVERCOMMUNICATOR_H
#include <QJsonDocument>
#include <QNetworkAccessManager>
#include <QNetworkRequestFactory>
#include <QObject>
#include <QRestAccessManager>
#include "../model/metadata.h"
class bidding;
class GenericCore;
class ServerCommunicator : public QObject {
Q_OBJECT
public:
explicit ServerCommunicator(GenericCore* core);
bool sslSupported() const;
QUrl url() const;
void setUrl(const QUrl& url);
void setServerConfiguration(const QString url, const QString email, const QString password);
public slots:
void onSendGetRequestTriggered(const GetRequestTypes type, QVariant data);
void onGetReplySuccessful(const GetRequestTypes type, const QJsonDocument doc);
void onGetReplyFailure(const GetRequestTypes type, const QString errorString);
void onSendPostRequestTriggered(const PostRequestTypes type, QVariant data);
void onPostReplySuccessful(const PostRequestTypes type, const QJsonDocument doc);
void onPostReplyFailure(const PostRequestTypes type, const QString errorString);
signals:
void urlChanged();
void itemsFetched(const QByteArray jsonDoc);
void itemsFetchFailure(const QString errorString);
void postRequestSuccessful(const QByteArray responseData);
void postRequestFailure(const QString errorString);
void deleteRequestSuccessful(const QByteArray responseData);
void deleteRequestFailure(const QString errorString);
void currentBiddingRoundChanged(int round, bool isRunning);
void biddingsChanged(int round, QList<bidding> biddings);
private:
GenericCore* m_core = nullptr;
QNetworkAccessManager m_netManager;
std::shared_ptr<QRestAccessManager> m_restManager;
std::shared_ptr<QNetworkRequestFactory> m_serviceApi;
QString m_email;
QString m_password;
// QString m_authToken;
/// reply parser
void currentBiddingRoundChangedReply(const QJsonDocument jsonDoc);
void currentBiddingsReply(const QJsonDocument jsonDoc);
};
#endif // SERVERCOMMUNICATOR_H