ImagingTools Core SDK
CComponents.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/QJsonObject>
7#include <QtCore/QJsonArray>
8#include <QtCore/QJsonValue>
9#include <QtCore/QList>
10
11// ImtCore includes
12#include <imtoas/CSchema.h>
13#include <imtoas/CSecurityScheme.h>
14#include <imtoas/CPath.h>
15#include <imtoas/CParameter.h>
16#include <imtoas/CRequestBody.h>
17#include <imtoas/CResponse.h>
18#include <imtoas/CHeader.h>
19
20
21namespace imtoas
22{
23
24
25class CComponents
26{
27public:
28 [[nodiscard]] QList<CSchema> GetSchemas() const;
29 void SetSchemas(const QList<CSchema>& schemas);
30
31 [[nodiscard]] QList<CResponse> GetResponses() const;
32 void SetResponses(const QList<CResponse>& responses);
33
34 [[nodiscard]] QList<CParameter> GetParameters() const;
35 void SetParameters(const QList<CParameter>& parameters);
36
37 [[nodiscard]] QList<CRequestBody> GetRequestBodies() const;
38 void SetRequestBodies(const QList<CRequestBody>& requestBodies);
39
40 [[nodiscard]] QList<CHeader> GetHeaders() const;
41 void SetHeaders(const QList<CHeader>& headers);
42
43 [[nodiscard]] QList<CSecurityScheme> GetSecuritySchemes() const;
44 void SetSecuritySchemes(const QList<CSecurityScheme>& securitySchemes);
45
46 [[nodiscard]] QList<CPath> GetCallbacks() const;
47 void SetCallbacks(const QList<CPath>& callbacks);
48
49 [[nodiscard]] QList<CPath> GetPathItems() const;
50 void SetPathItems(const QList<CPath>& pathItems);
51
52 static bool ReadFromJsonObject(CComponents& object, const QJsonObject& jsonObject, const QJsonObject& globalObject);
53
54 bool operator==(const CComponents& other) const;
55 bool operator!=(const CComponents& other) const { return !(operator==(other)); }
56
57private:
58 QList<CSchema> m_schemas;
59 QList<CResponse> m_responses;
60 QList<CParameter> m_parameters;
61 QList<CRequestBody> m_requestBodies;
62 QList<CHeader> m_headers;
63 QList<CSecurityScheme> m_securitySchemes;
64 QList<CPath> m_callbacks;
65 QList<CPath> m_pathItems;
66};
67
68
69} // namespace imtoas
70
71
72Q_DECLARE_METATYPE(imtoas::CComponents);
73
74