diff options
Diffstat (limited to 'lib/csapi/capabilities.cpp')
-rw-r--r-- | lib/csapi/capabilities.cpp | 68 |
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"); } |