ImagingTools Core SDK
CHttpServletCompBase.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QMutex>
7
8// ACF includes
9#include <ibase/IApplicationInfo.h>
10#include <ilog/TLoggerCompWrap.h>
11#include <ifile/IFileNameParam.h>
12#include <iprm/IIdParam.h>
13
14// ImtCore includes
15#include <imtrest/IRequestServlet.h>
16#include <imtrest/CHttpRequest.h>
17
18
19namespace imtrest
20{
21 class IResponse;
22}
23
24
25namespace imtrest
26{
27
28
29class CHttpServletCompBase:
30 public ilog::CLoggerComponentBase,
31 virtual public imtrest::IRequestServlet
32{
33public:
34 typedef ilog::CLoggerComponentBase BaseClass;
35
36 I_BEGIN_BASE_COMPONENT(CHttpServletCompBase)
37 I_REGISTER_INTERFACE(IRequestServlet);
38 I_ASSIGN(m_commandIdAttrPtr, "CommandId", "List of command-ID used with corresponded handlers", true, "");
39 I_ASSIGN(m_commandIdCompPtr, "CommandIdParam", "Component provided list of command-ID used with corresponded handlers", false, "CommandIdParam");
40 I_ASSIGN(m_applicationInfoCompPtr, "ApplicationInfo", "Application info", false, "ApplicationInfo");
41 I_END_COMPONENT
42
43 // reimplemented (IRequestHandler)
44 virtual bool IsCommandSupported(const QByteArray& commandId) const override;
45 virtual ConstResponsePtr ProcessRequest(const imtrest::IRequest& request, const QByteArray& subCommandId = QByteArray()) const override;
46
47protected:
48 typedef QMap<QByteArray, QByteArray> HeadersMap;
49
50 virtual ConstResponsePtr OnGet(
51 const QByteArray& commandId,
52 const imtrest::IRequest::CommandParams& commandParams,
53 const HeadersMap& headers,
54 const imtrest::CHttpRequest& request) const;
55 virtual ConstResponsePtr OnPost(
56 const QByteArray& commandId,
57 const imtrest::IRequest::CommandParams& commandParams,
58 const HeadersMap& headers,
59 const imtrest::CHttpRequest& request) const;
60 virtual ConstResponsePtr OnDelete(
61 const QByteArray& commandId,
62 const imtrest::IRequest::CommandParams& commandParams,
63 const HeadersMap& headers,
64 const imtrest::CHttpRequest& request) const;
65 virtual ConstResponsePtr OnPatch(
66 const QByteArray& commandId,
67 const imtrest::IRequest::CommandParams& commandParams,
68 const HeadersMap& headers,
69 const imtrest::CHttpRequest& request) const;
70 virtual ConstResponsePtr OnPut(
71 const QByteArray& commandId,
72 const imtrest::IRequest::CommandParams& commandParams,
73 const HeadersMap& headers,
74 const imtrest::CHttpRequest& request) const;
75 virtual ConstResponsePtr OnHead(
76 const QByteArray& commandId,
77 const imtrest::IRequest::CommandParams& commandParams,
78 const HeadersMap& headers,
79 const imtrest::CHttpRequest& request) const;
80 virtual ConstResponsePtr OnOptions(
81 const QByteArray& commandId,
82 const imtrest::IRequest::CommandParams& commandParams,
83 const HeadersMap& headers,
84 const imtrest::CHttpRequest& request) const;
85 virtual ConstResponsePtr OnUnknown(
86 const QByteArray& commandId,
87 const imtrest::IRequest::CommandParams& commandParams,
88 const HeadersMap& headers,
89 const imtrest::CHttpRequest& request) const;
90 virtual ConstResponsePtr OnInvalid(
91 const QByteArray& commandId,
92 const imtrest::IRequest::CommandParams& commandParams,
93 const HeadersMap& headers,
94 const imtrest::CHttpRequest& request) const;
95
96protected:
97 virtual ConstResponsePtr OnRequestReceived(const imtrest::CHttpRequest& request) const;
98 virtual ConstResponsePtr CreateDefaultErrorResponse(const QByteArray& errorString, const imtrest::CHttpRequest& request) const;
99 static void ExtractRequestInfo(
100 const imtrest::CHttpRequest& request,
101 QByteArray& commandId,
102 imtrest::IRequest::CommandParams& commandParams,
103 HeadersMap& headers);
104
105protected:
106 I_ATTR(QByteArray, m_commandIdAttrPtr);
107 I_REF(iprm::IIdParam, m_commandIdCompPtr);
108 I_REF(ibase::IApplicationInfo, m_applicationInfoCompPtr);
109};
110
111
112} // namespace imtrest
113
114