backendapimanager.h 1.5 KB

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