1 /******************************************************************************
2  * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
3  */
4 
5 #include "capabilities.h"
6 
7 #include "converters.h"
8 
9 #include <QtCore/QStringBuilder>
10 
11 using namespace Quotient;
12 
13 static const auto basePath = QStringLiteral("/_matrix/client/r0");
14 
15 // Converters
16 namespace Quotient
17 {
18 
19 template <>
20 struct JsonObjectConverter<GetCapabilitiesJob::ChangePasswordCapability>
21 {
fillFromQuotient::JsonObjectConverter22     static void fillFrom(const QJsonObject& jo,
23                          GetCapabilitiesJob::ChangePasswordCapability& result)
24     {
25         fromJson(jo.value("enabled"_ls), result.enabled);
26     }
27 };
28 
29 template <>
30 struct JsonObjectConverter<GetCapabilitiesJob::RoomVersionsCapability>
31 {
fillFromQuotient::JsonObjectConverter32     static void fillFrom(const QJsonObject& jo,
33                          GetCapabilitiesJob::RoomVersionsCapability& result)
34     {
35         fromJson(jo.value("default"_ls), result.defaultVersion);
36         fromJson(jo.value("available"_ls), result.available);
37     }
38 };
39 
40 template <>
41 struct JsonObjectConverter<GetCapabilitiesJob::Capabilities>
42 {
fillFromQuotient::JsonObjectConverter43     static void fillFrom(QJsonObject jo,
44                          GetCapabilitiesJob::Capabilities& result)
45     {
46         fromJson(jo.take("m.change_password"_ls), result.changePassword);
47         fromJson(jo.take("m.room_versions"_ls), result.roomVersions);
48         fromJson(jo, result.additionalProperties);
49     }
50 };
51 
52 } // namespace Quotient
53 
54 class GetCapabilitiesJob::Private
55 {
56 public:
57     Capabilities capabilities;
58 };
59 
makeRequestUrl(QUrl baseUrl)60 QUrl GetCapabilitiesJob::makeRequestUrl(QUrl baseUrl)
61 {
62     return BaseJob::makeRequestUrl(std::move(baseUrl),
63                                    basePath % "/capabilities");
64 }
65 
66 static const auto GetCapabilitiesJobName = QStringLiteral("GetCapabilitiesJob");
67 
GetCapabilitiesJob()68 GetCapabilitiesJob::GetCapabilitiesJob()
69     : BaseJob(HttpVerb::Get, GetCapabilitiesJobName, basePath % "/capabilities")
70     , d(new Private)
71 {}
72 
73 GetCapabilitiesJob::~GetCapabilitiesJob() = default;
74 
capabilities() const75 const GetCapabilitiesJob::Capabilities& GetCapabilitiesJob::capabilities() const
76 {
77     return d->capabilities;
78 }
79 
parseJson(const QJsonDocument & data)80 BaseJob::Status GetCapabilitiesJob::parseJson(const QJsonDocument& data)
81 {
82     auto json = data.object();
83     if (!json.contains("capabilities"_ls))
84         return { IncorrectResponse,
85                  "The key 'capabilities' not found in the response" };
86     fromJson(json.value("capabilities"_ls), d->capabilities);
87 
88     return Success;
89 }
90