6#include <imtrest/IProtocolEngine.h>
7#include <imtrest/CHttpServletCompBase.h>
8#include <imtgql/IGqlRequestHandler.h>
9#include <imtgql/IGqlContextCreator.h>
10#include <imtgql/IGqlRequestProvider.h>
11#include <imtbase/IObjectCollection.h>
12#include <imtauth/IJwtSessionController.h>
13#include <imtauth/IPersonalAccessTokenManager.h>
20class CHttpGraphQLServletComp:
public imtrest::CHttpServletCompBase,
virtual public imtgql::IGqlRequestProvider
23 using BaseClass = imtrest::CHttpServletCompBase;
26 I_BEGIN_COMPONENT(CHttpGraphQLServletComp);
27 I_REGISTER_INTERFACE(imtgql::IGqlRequestProvider);
28 I_ASSIGN_MULTI_0(m_gqlRequestHandlerCompPtr,
"GqlRequestHandler",
"Handler for GraphQL-request",
true);
29 I_ASSIGN(m_gqlContextCreatorCompPtr,
"GqlContextCreator",
"GraphQL-related context creator",
false,
"GqlContextCreator");
30 I_ASSIGN(m_jwtSessionControllerCompPtr,
"JwtSessionController",
"JWT session controller",
false,
"JwtSessionController");
31 I_ASSIGN(m_patManagerCompPtr,
"PersonalAccessTokenManager",
"Personal Access Token manager",
false,
"PersonalAccessTokenManager");
36 virtual bool IsCommandSupported(
const QByteArray& commandId)
const override;
39 virtual imtrest::ConstResponsePtr OnPost(
const QByteArray& commandId,
const imtrest::IRequest::CommandParams& commandParams,
const HeadersMap& headers,
const imtrest::CHttpRequest& request)
const override;
45 imtrest::ConstResponsePtr CreateResponse(
46 const StatusCode& statusCode,
47 const QByteArray& payload,
49 const QByteArray& contentTypeId =
"text/plain; charset=utf-8")
const;
50 imtrest::ConstResponsePtr GenerateError(
51 const StatusCode& errorCode,
52 const QString& errorString,
53 const imtrest::CHttpRequest& request)
const;
54 QByteArray BuildGqlErrorJson(
55 const QByteArray& gqlCommand,
56 const QString& message,
57 const QString& type)
const;
60 I_MULTIREF(imtgql::IGqlRequestHandler, m_gqlRequestHandlerCompPtr);
61 I_REF(imtgql::IGqlContextCreator, m_gqlContextCreatorCompPtr);
62 I_REF(imtauth::IJwtSessionController, m_jwtSessionControllerCompPtr);
66 mutable imtgql::CGqlRequest m_lastRequest;