aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/keys.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/keys.cpp')
-rw-r--r--lib/csapi/keys.cpp206
1 files changed, 206 insertions, 0 deletions
diff --git a/lib/csapi/keys.cpp b/lib/csapi/keys.cpp
new file mode 100644
index 00000000..2d6885dd
--- /dev/null
+++ b/lib/csapi/keys.cpp
@@ -0,0 +1,206 @@
+/******************************************************************************
+ * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
+ */
+
+#include "keys.h"
+
+#include "converters.h"
+
+#include <QtCore/QStringBuilder>
+
+using namespace QMatrixClient;
+
+static const auto basePath = QStringLiteral("/_matrix/client/r0");
+
+class UploadKeysJob::Private
+{
+ public:
+ QHash<QString, int> oneTimeKeyCounts;
+};
+
+UploadKeysJob::UploadKeysJob(const Omittable<DeviceKeys>& deviceKeys, const QHash<QString, QVariant>& oneTimeKeys)
+ : BaseJob(HttpVerb::Post, "UploadKeysJob",
+ basePath % "/keys/upload")
+ , d(new Private)
+{
+ QJsonObject _data;
+ addToJson<IfNotEmpty>(_data, "device_keys", deviceKeys);
+ addToJson<IfNotEmpty>(_data, "one_time_keys", oneTimeKeys);
+ setRequestData(_data);
+}
+
+UploadKeysJob::~UploadKeysJob() = default;
+
+const QHash<QString, int>& UploadKeysJob::oneTimeKeyCounts() const
+{
+ return d->oneTimeKeyCounts;
+}
+
+BaseJob::Status UploadKeysJob::parseJson(const QJsonDocument& data)
+{
+ auto json = data.object();
+ if (!json.contains("one_time_key_counts"))
+ return { JsonParseError,
+ "The key 'one_time_key_counts' not found in the response" };
+ d->oneTimeKeyCounts = fromJson<QHash<QString, int>>(json.value("one_time_key_counts"));
+ return Success;
+}
+
+namespace QMatrixClient
+{
+ // Converters
+
+ template <> struct FromJson<QueryKeysJob::UnsignedDeviceInfo>
+ {
+ QueryKeysJob::UnsignedDeviceInfo operator()(const QJsonValue& jv)
+ {
+ const auto& _json = jv.toObject();
+ QueryKeysJob::UnsignedDeviceInfo result;
+ result.deviceDisplayName =
+ fromJson<QString>(_json.value("device_display_name"));
+
+ return result;
+ }
+ };
+
+ template <> struct FromJson<QueryKeysJob::DeviceInformation>
+ {
+ QueryKeysJob::DeviceInformation operator()(const QJsonValue& jv)
+ {
+ const auto& _json = jv.toObject();
+ QueryKeysJob::DeviceInformation result;
+ result.unsignedData =
+ fromJson<QueryKeysJob::UnsignedDeviceInfo>(_json.value("unsigned"));
+
+ return result;
+ }
+ };
+} // namespace QMatrixClient
+
+class QueryKeysJob::Private
+{
+ public:
+ QHash<QString, QJsonObject> failures;
+ QHash<QString, QHash<QString, DeviceInformation>> deviceKeys;
+};
+
+QueryKeysJob::QueryKeysJob(const QHash<QString, QStringList>& deviceKeys, Omittable<int> timeout, const QString& token)
+ : BaseJob(HttpVerb::Post, "QueryKeysJob",
+ basePath % "/keys/query")
+ , d(new Private)
+{
+ QJsonObject _data;
+ addToJson<IfNotEmpty>(_data, "timeout", timeout);
+ addToJson<>(_data, "device_keys", deviceKeys);
+ addToJson<IfNotEmpty>(_data, "token", token);
+ setRequestData(_data);
+}
+
+QueryKeysJob::~QueryKeysJob() = default;
+
+const QHash<QString, QJsonObject>& QueryKeysJob::failures() const
+{
+ return d->failures;
+}
+
+const QHash<QString, QHash<QString, QueryKeysJob::DeviceInformation>>& QueryKeysJob::deviceKeys() const
+{
+ return d->deviceKeys;
+}
+
+BaseJob::Status QueryKeysJob::parseJson(const QJsonDocument& data)
+{
+ auto json = data.object();
+ d->failures = fromJson<QHash<QString, QJsonObject>>(json.value("failures"));
+ d->deviceKeys = fromJson<QHash<QString, QHash<QString, DeviceInformation>>>(json.value("device_keys"));
+ return Success;
+}
+
+class ClaimKeysJob::Private
+{
+ public:
+ QHash<QString, QJsonObject> failures;
+ QHash<QString, QHash<QString, QVariant>> oneTimeKeys;
+};
+
+ClaimKeysJob::ClaimKeysJob(const QHash<QString, QHash<QString, QString>>& oneTimeKeys, Omittable<int> timeout)
+ : BaseJob(HttpVerb::Post, "ClaimKeysJob",
+ basePath % "/keys/claim")
+ , d(new Private)
+{
+ QJsonObject _data;
+ addToJson<IfNotEmpty>(_data, "timeout", timeout);
+ addToJson<>(_data, "one_time_keys", oneTimeKeys);
+ setRequestData(_data);
+}
+
+ClaimKeysJob::~ClaimKeysJob() = default;
+
+const QHash<QString, QJsonObject>& ClaimKeysJob::failures() const
+{
+ return d->failures;
+}
+
+const QHash<QString, QHash<QString, QVariant>>& ClaimKeysJob::oneTimeKeys() const
+{
+ return d->oneTimeKeys;
+}
+
+BaseJob::Status ClaimKeysJob::parseJson(const QJsonDocument& data)
+{
+ auto json = data.object();
+ d->failures = fromJson<QHash<QString, QJsonObject>>(json.value("failures"));
+ d->oneTimeKeys = fromJson<QHash<QString, QHash<QString, QVariant>>>(json.value("one_time_keys"));
+ return Success;
+}
+
+class GetKeysChangesJob::Private
+{
+ public:
+ QStringList changed;
+ QStringList left;
+};
+
+BaseJob::Query queryToGetKeysChanges(const QString& from, const QString& to)
+{
+ BaseJob::Query _q;
+ _q.addQueryItem("from", from);
+ _q.addQueryItem("to", to);
+ return _q;
+}
+
+QUrl GetKeysChangesJob::makeRequestUrl(QUrl baseUrl, const QString& from, const QString& to)
+{
+ return BaseJob::makeRequestUrl(std::move(baseUrl),
+ basePath % "/keys/changes",
+ queryToGetKeysChanges(from, to));
+}
+
+GetKeysChangesJob::GetKeysChangesJob(const QString& from, const QString& to)
+ : BaseJob(HttpVerb::Get, "GetKeysChangesJob",
+ basePath % "/keys/changes",
+ queryToGetKeysChanges(from, to))
+ , d(new Private)
+{
+}
+
+GetKeysChangesJob::~GetKeysChangesJob() = default;
+
+const QStringList& GetKeysChangesJob::changed() const
+{
+ return d->changed;
+}
+
+const QStringList& GetKeysChangesJob::left() const
+{
+ return d->left;
+}
+
+BaseJob::Status GetKeysChangesJob::parseJson(const QJsonDocument& data)
+{
+ auto json = data.object();
+ d->changed = fromJson<QStringList>(json.value("changed"));
+ d->left = fromJson<QStringList>(json.value("left"));
+ return Success;
+}
+