#ifndef SERVERCOMMUNICATOR_H #define SERVERCOMMUNICATOR_H #include #include #include #include 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 m_restManager; std::shared_ptr 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