aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/capabilities.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/capabilities.cpp')
-rw-r--r--lib/csapi/capabilities.cpp68
1 files changed, 4 insertions, 64 deletions
diff --git a/lib/csapi/capabilities.cpp b/lib/csapi/capabilities.cpp
index 8c7ed141..33a53cad 100644
--- a/lib/csapi/capabilities.cpp
+++ b/lib/csapi/capabilities.cpp
@@ -4,80 +4,20 @@
#include "capabilities.h"
-#include "converters.h"
-
#include <QtCore/QStringBuilder>
using namespace Quotient;
-static const auto basePath = QStringLiteral("/_matrix/client/r0");
-
-// Converters
-namespace Quotient {
-
-template <>
-struct JsonObjectConverter<GetCapabilitiesJob::ChangePasswordCapability> {
- static void fillFrom(const QJsonObject& jo,
- GetCapabilitiesJob::ChangePasswordCapability& result)
- {
- fromJson(jo.value("enabled"_ls), result.enabled);
- }
-};
-
-template <>
-struct JsonObjectConverter<GetCapabilitiesJob::RoomVersionsCapability> {
- static void fillFrom(const QJsonObject& jo,
- GetCapabilitiesJob::RoomVersionsCapability& result)
- {
- fromJson(jo.value("default"_ls), result.defaultVersion);
- fromJson(jo.value("available"_ls), result.available);
- }
-};
-
-template <>
-struct JsonObjectConverter<GetCapabilitiesJob::Capabilities> {
- static void fillFrom(QJsonObject jo,
- GetCapabilitiesJob::Capabilities& result)
- {
- fromJson(jo.take("m.change_password"_ls), result.changePassword);
- fromJson(jo.take("m.room_versions"_ls), result.roomVersions);
- fromJson(jo, result.additionalProperties);
- }
-};
-
-} // namespace Quotient
-
-class GetCapabilitiesJob::Private {
-public:
- Capabilities capabilities;
-};
-
QUrl GetCapabilitiesJob::makeRequestUrl(QUrl baseUrl)
{
return BaseJob::makeRequestUrl(std::move(baseUrl),
- basePath % "/capabilities");
+ QStringLiteral("/_matrix/client/r0")
+ % "/capabilities");
}
GetCapabilitiesJob::GetCapabilitiesJob()
: BaseJob(HttpVerb::Get, QStringLiteral("GetCapabilitiesJob"),
- basePath % "/capabilities")
- , d(new Private)
-{}
-
-GetCapabilitiesJob::~GetCapabilitiesJob() = default;
-
-const GetCapabilitiesJob::Capabilities& GetCapabilitiesJob::capabilities() const
+ QStringLiteral("/_matrix/client/r0") % "/capabilities")
{
- return d->capabilities;
-}
-
-BaseJob::Status GetCapabilitiesJob::parseJson(const QJsonDocument& data)
-{
- auto json = data.object();
- if (!json.contains("capabilities"_ls))
- return { IncorrectResponse,
- "The key 'capabilities' not found in the response" };
- fromJson(json.value("capabilities"_ls), d->capabilities);
-
- return Success;
+ addExpectedKey("capabilities");
}