Files
GenericQtClientCore/network/servercommunicator.h

72 lines
2.1 KiB
C
Raw Normal View History

#ifndef SERVERCOMMUNICATOR_H
#define SERVERCOMMUNICATOR_H
#include <QNetworkAccessManager>
#include <QNetworkRequestFactory>
#include <QObject>
#include <QRestAccessManager>
class ServerCommunicator : public QObject {
Q_OBJECT
public:
explicit ServerCommunicator(QObject* parent = nullptr);
bool sslSupported();
QUrl url() const;
void setUrl(const QUrl& url);
void setServerConfiguration(const QString url,
const QString email,
const QString password,
const QString authToken);
public slots:
void fetchItems();
void sendItem(const QByteArray& jsonData);
void deleteItem(const QString& id);
// NEXT editItem(const QByteArray& jsonData)
signals:
void urlChanged();
void loginSuccessful(const QByteArray responseData);
void loginFailure(const QString errorString);
void notAuthorized(const QString path);
void itemsFetched(const QByteArray jsonDoc);
void itemsFetchFailure(const QString errorString);
void sendItemSuccessful(const QByteArray responseData);
void sendItemFailure(const QString errorString);
void deleteItemSuccessful(const QByteArray responseData);
void deleteItemFailure(const QString errorString);
private:
QNetworkAccessManager m_netManager;
std::shared_ptr<QRestAccessManager> m_restManager;
std::shared_ptr<QNetworkRequestFactory> m_serviceApi;
QString m_email;
QString m_password;
QString m_authToken;
bool validLoginCredentials();
void sendGetRequest(const QString& path);
void onGetReplySuccessful(const QString& path, const QJsonDocument doc);
void onGetReplyFailure(const QString& path, const QString errorString);
void sendPostRequest(const QString& path, const QByteArray data);
void onPostReplySuccessful(const QString& path, const QJsonDocument doc);
void onPostReplyFailure(const QString& path, const QString errorString);
void sendDeleteRequest(const QString& path);
void onDeleteReplySuccessful(const QString& path, const QJsonDocument doc);
void onDeleteReplyFailure(const QString& path, const QString errorString);
};
#endif // SERVERCOMMUNICATOR_H