backendapimanager.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef BACKENDAPIMANAGER_H
  2. #define BACKENDAPIMANAGER_H
  3. #include <QJsonDocument>
  4. #include <QJsonObject>
  5. #include <QNetworkAccessManager>
  6. #include <QNetworkReply>
  7. #include <QNetworkRequest>
  8. #include <QObject>
  9. class backendAPIManager : public QObject {
  10. Q_OBJECT
  11. public:
  12. static void initialize(const QString &backendUrl);
  13. static void cleanup();
  14. static void setAuthToken(const QString &token);
  15. static bool uploadBlastProject(const QJsonObject &projectData);
  16. static bool uploadBlastProjectDets(const QJsonObject &detsData);
  17. static bool uploadBlastEquipments(const QJsonObject &regDetsData);
  18. signals:
  19. void uploadFinished(const QJsonDocument &response);
  20. void uploadError(const QString &errorString);
  21. private:
  22. explicit backendAPIManager(const QString &backendUrl, QObject *parent = nullptr);
  23. ~backendAPIManager();
  24. // HTTP methods
  25. QNetworkReply *sendRequest(const QString &endpoint, const QJsonObject &data,
  26. const QString &method = "POST");
  27. void setupRequest(QNetworkRequest &request, const QString &endpoint);
  28. void handleNetworkReply(QNetworkReply *reply);
  29. static backendAPIManager *s_instance;
  30. QString backendUrl;
  31. QNetworkAccessManager *networkManager;
  32. bool requestSuccess;
  33. QString authToken;
  34. private slots:
  35. void handleUploadFinished(const QJsonDocument &response, const QUrl &url);
  36. void handleUploadError(const QString &error);
  37. };
  38. #endif // BACKENDAPIMANAGER_H