configapi.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "configapi.h"
  2. #include <QJsonDocument>
  3. #include <QJsonObject>
  4. #include <QJsonValue>
  5. #include <QNetworkAccessManager>
  6. #include <QUrlQuery>
  7. #include <basemainTr.h>
  8. #include <optional>
  9. #include "appevent.h"
  10. #include "qvariant.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. static const QLatin1String scCode("code");
  17. static const QLatin1String scMessage("message");
  18. static const QLatin1String scData("data");
  19. static const QLatin1String scValue("value");
  20. ConfigApi::ConfigApi()
  21. : url("/api/v1/sys/config/get_config_value")
  22. {}
  23. ConfigApi::ConfigApi(const QString &name)
  24. {
  25. QUrl qurl("/api/v1/sys/config/get_config_value");
  26. QUrlQuery query;
  27. query.addQueryItem("name", name);
  28. qurl.setQuery(query);
  29. url = qurl.toString();
  30. }
  31. std::optional<QVariant> ConfigApi::get()
  32. {
  33. std::optional<QJsonValue> responseData = sendRequest(QNetworkAccessManager::GetOperation, url);
  34. if (!responseData.has_value()) {
  35. return false;
  36. }
  37. const QJsonObject &object = responseData.value().toObject();
  38. if (object.contains(scData)) {
  39. const QJsonObject &data = object[scData].toObject();
  40. if (data.contains(scValue)) {
  41. return data[scValue].toVariant();
  42. }
  43. }
  44. return std::nullopt;
  45. }
  46. } // namespace TC