processapi.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "processapi.h"
  2. #include "qjsonarray.h"
  3. #include "student.h"
  4. #include <QJsonDocument>
  5. #include <QJsonObject>
  6. #include <QJsonValue>
  7. #include <QNetworkAccessManager>
  8. #include <QUrlQuery>
  9. #include <optional>
  10. #include <basemainTr.h>
  11. namespace TC {
  12. void critical(const QString &text, const QString &title = Tr::tr("Error"));
  13. std::optional<QJsonValue> sendRequest(QNetworkAccessManager::Operation op,
  14. const QString &url,
  15. const QByteArray &postData = QByteArray());
  16. std::optional<QJsonValue> uploaderRequest(const QString &url, const QStringList &fileList);
  17. static const QLatin1String scCode("code");
  18. static const QLatin1String scMessage("message");
  19. static const QLatin1String scData("data");
  20. static const QLatin1String scList("list");
  21. ProcessApi::ProcessApi()
  22. : url("/api/v1/user_pid/addall")
  23. {}
  24. ProcessApi::ProcessApi(const QJsonArray &array)
  25. : url("/api/v1/user_pid/addall")
  26. {
  27. // QJsonDocument jsonData(array);
  28. // sendData = jsonData.toJson();
  29. QJsonObject json;
  30. json["pids"] = array;
  31. QJsonDocument jsonData(json);
  32. sendData = jsonData.toJson();
  33. }
  34. bool ProcessApi::post()
  35. {
  36. // qDebug().noquote() << sendData;
  37. std::optional<QJsonValue> responseData = sendRequest(QNetworkAccessManager::PostOperation,
  38. url,
  39. sendData);
  40. if (!responseData.has_value()) {
  41. return false;
  42. }
  43. QJsonValue data;
  44. const QJsonObject object = responseData.value().toObject();
  45. if (object.contains(scCode)) {
  46. int code = object.value(scCode).toInt();
  47. if (code == 200) {
  48. return true;
  49. }
  50. }
  51. if (object.contains(scMessage)) {
  52. const QString &message = object.value(scMessage).toString();
  53. // Core::MessageManager::writeFlashing(message);
  54. }
  55. if (object.contains(scData)) {
  56. data = object.value(scData);
  57. }
  58. return false;
  59. }
  60. ProcessNameApi::ProcessNameApi()
  61. : url("/api/v1/process/listwithmachine")
  62. {}
  63. QJsonArray ProcessNameApi::get()
  64. {
  65. std::optional<QJsonValue> responseData = sendRequest(QNetworkAccessManager::GetOperation,
  66. url,
  67. sendData);
  68. if (!responseData.has_value()) {
  69. return QJsonArray();
  70. }
  71. QJsonValue data;
  72. const QJsonObject object = responseData.value().toObject();
  73. if (object.contains(scList)) {
  74. return object.value(scList).toArray();
  75. }
  76. return QJsonArray();
  77. }
  78. ProcessImageApi::ProcessImageApi()
  79. : url("/api/v1/student_game_pic/single_up")
  80. {}
  81. bool ProcessImageApi::post(const QStringList &fileList)
  82. {
  83. std::optional<QJsonValue> responseData = uploaderRequest(url, fileList);
  84. if (!responseData.has_value()) {
  85. return false;
  86. }
  87. QJsonValue data;
  88. const QJsonObject object = responseData.value().toObject();
  89. if (object.contains(scCode)) {
  90. return object.value(scCode).toInt() == 200;
  91. }
  92. return false;
  93. }
  94. } // namespace TC