6#include <QtCore/QJsonDocument>
7#include <QtCore/QJsonObject>
8#include <QtCore/QJsonArray>
11#include <icomp/CComponentBase.h>
14#include <imtclientgql/IGqlClient.h>
22class TClientRequestManagerCompWrap:
public Base
25 typedef Base BaseClass;
27 I_BEGIN_BASE_COMPONENT(TClientRequestManagerCompWrap);
28 I_ASSIGN(m_apiClientCompPtr,
"ApiClient",
"API Client",
true,
"ApiClient");
32 template<
class SdlClass>
37 if (!m_apiClientCompPtr.IsValid()){
42 IGqlClient::GqlRequestPtr requestPtr;
43 requestPtr.MoveCastedPtr(request.CloneMe());
44 if (!requestPtr.IsValid()){
45 errorMessage = QStringLiteral(
"Request is invalid");
49 IGqlClient::GqlResponsePtr responsePtr = m_apiClientCompPtr->SendRequest(requestPtr);
50 if (!responsePtr.IsValid()){
51 errorMessage = QStringLiteral(
"Response is invalid");
55 const QByteArray responseData = responsePtr->GetResponseData();
56 const QJsonDocument document = QJsonDocument::fromJson(responseData);
57 if (!document.isObject()){
58 errorMessage = QStringLiteral(
"Response is invalid");
62 QJsonObject
object = document.object();
64 const QJsonValue payloadValue =
object.value(QStringLiteral(
"payload"));
65 if (payloadValue.isObject()){
66 object = payloadValue.toObject();
69 const QJsonValue errorsValue =
object.value(QStringLiteral(
"errors"));
70 if (errorsValue.isArray()){
71 const QJsonArray errorArr = errorsValue.toArray();
72 if (!errorArr.isEmpty()){
73 const QJsonValue firstError = errorArr.at(0);
74 if (firstError.isObject()){
75 errorMessage = firstError.toObject().value(QStringLiteral(
"message")).toString();
80 response.Version_1_0.emplace();
84 const QJsonValue dataValue =
object.value(QStringLiteral(
"data"));
85 if (dataValue.isObject()){
86 object = dataValue.toObject();
88 const QString commandId = request.GetCommandId();
89 const QJsonValue commandValue =
object.value(commandId);
90 if (commandValue.isObject()){
91 object = commandValue.toObject();
96 response.Version_1_0.emplace();
98 if (!response.Version_1_0->ReadFromJsonObject(
object)){
99 errorMessage = QStringLiteral(
"Response parsing error");
110typedef TClientRequestManagerCompWrap<icomp::CComponentBase> CClientRequestManagerCompBase;