diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2019-06-24 07:21:13 +0900 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2019-06-24 07:21:13 +0900 |
commit | 63ae79c3e2820efc2ba60d33e2caf2d7b9b3c408 (patch) | |
tree | 2552f5049a6ef7ba0034483b25ca4ab33d1fcb13 /lib/csapi/definitions | |
parent | e083d327e6f6581210f8d077d8bbe1151e81e82c (diff) | |
parent | 93f0c8fe89f448d1d58caa757573f17102369471 (diff) | |
download | libquotient-63ae79c3e2820efc2ba60d33e2caf2d7b9b3c408.tar.gz libquotient-63ae79c3e2820efc2ba60d33e2caf2d7b9b3c408.zip |
Merge branch 'master' into clang-format
# Conflicts:
# CMakeLists.txt
# lib/avatar.cpp
# lib/connection.cpp
# lib/connection.h
# lib/connectiondata.cpp
# lib/csapi/account-data.cpp
# lib/csapi/account-data.h
# lib/csapi/capabilities.cpp
# lib/csapi/capabilities.h
# lib/csapi/content-repo.cpp
# lib/csapi/create_room.cpp
# lib/csapi/filter.cpp
# lib/csapi/joining.cpp
# lib/csapi/keys.cpp
# lib/csapi/list_joined_rooms.cpp
# lib/csapi/notifications.cpp
# lib/csapi/openid.cpp
# lib/csapi/presence.cpp
# lib/csapi/pushrules.cpp
# lib/csapi/registration.cpp
# lib/csapi/room_upgrades.cpp
# lib/csapi/room_upgrades.h
# lib/csapi/search.cpp
# lib/csapi/users.cpp
# lib/csapi/versions.cpp
# lib/csapi/whoami.cpp
# lib/csapi/{{base}}.cpp.mustache
# lib/events/accountdataevents.h
# lib/events/eventcontent.h
# lib/events/roommemberevent.cpp
# lib/events/stateevent.cpp
# lib/jobs/basejob.cpp
# lib/jobs/basejob.h
# lib/networkaccessmanager.cpp
# lib/networksettings.cpp
# lib/room.cpp
# lib/room.h
# lib/settings.cpp
# lib/settings.h
# lib/syncdata.cpp
# lib/user.cpp
# lib/user.h
# lib/util.cpp
Diffstat (limited to 'lib/csapi/definitions')
28 files changed, 625 insertions, 466 deletions
diff --git a/lib/csapi/definitions/auth_data.cpp b/lib/csapi/definitions/auth_data.cpp index f40a3a90..b0303a19 100644 --- a/lib/csapi/definitions/auth_data.cpp +++ b/lib/csapi/definitions/auth_data.cpp @@ -4,21 +4,25 @@ #include "auth_data.h" + using namespace QMatrixClient; -void JsonObjectConverter<AuthenticationData>::dumpTo( - QJsonObject& jo, const AuthenticationData& pod) + +void JsonObjectConverter<AuthenticationData>::dumpTo(QJsonObject& jo, const AuthenticationData& pod) { fillJson(jo, pod.authInfo); addParam<>(jo, QStringLiteral("type"), pod.type); addParam<IfNotEmpty>(jo, QStringLiteral("session"), pod.session); -} -void JsonObjectConverter<AuthenticationData>::fillFrom( - QJsonObject jo, AuthenticationData& result) +} + +void JsonObjectConverter<AuthenticationData>::fillFrom(QJsonObject jo, AuthenticationData& result) { fromJson(jo.take("type"_ls), result.type); fromJson(jo.take("session"_ls), result.session); - fromJson(jo, result.authInfo); + } + + + diff --git a/lib/csapi/definitions/auth_data.h b/lib/csapi/definitions/auth_data.h index e25dff7a..689caf49 100644 --- a/lib/csapi/definitions/auth_data.h +++ b/lib/csapi/definitions/auth_data.h @@ -4,27 +4,37 @@ #pragma once + + #include "converters.h" -#include <QtCore/QHash> #include <QtCore/QJsonObject> +#include <QtCore/QHash> + +namespace QMatrixClient +{ + +// Data structures + +/// Used by clients to submit authentication information to the interactive-authentication API +struct AuthenticationData +{ + /// The login type that the client is attempting to complete. + QString type; + /// The value of the session key given by the homeserver. + QString session; + + + /// Keys dependent on the login type + QHash<QString, QJsonObject> authInfo; + +}; + +template <> struct JsonObjectConverter<AuthenticationData> +{ + static void dumpTo(QJsonObject& jo, const AuthenticationData& pod); + static void fillFrom(QJsonObject jo, AuthenticationData& pod);}; + -namespace QMatrixClient { - // Data structures - - /// Used by clients to submit authentication information to the - /// interactive-authentication API - struct AuthenticationData { - /// The login type that the client is attempting to complete. - QString type; - /// The value of the session key given by the homeserver. - QString session; - /// Keys dependent on the login type - QHash<QString, QJsonObject> authInfo; - }; - template <> struct JsonObjectConverter<AuthenticationData> { - static void dumpTo(QJsonObject& jo, const AuthenticationData& pod); - static void fillFrom(QJsonObject jo, AuthenticationData& pod); - }; } // namespace QMatrixClient diff --git a/lib/csapi/definitions/client_device.cpp b/lib/csapi/definitions/client_device.cpp index 2ca58e2f..5710537d 100644 --- a/lib/csapi/definitions/client_device.cpp +++ b/lib/csapi/definitions/client_device.cpp @@ -4,21 +4,27 @@ #include "client_device.h" + using namespace QMatrixClient; + void JsonObjectConverter<Device>::dumpTo(QJsonObject& jo, const Device& pod) { addParam<>(jo, QStringLiteral("device_id"), pod.deviceId); addParam<IfNotEmpty>(jo, QStringLiteral("display_name"), pod.displayName); addParam<IfNotEmpty>(jo, QStringLiteral("last_seen_ip"), pod.lastSeenIp); addParam<IfNotEmpty>(jo, QStringLiteral("last_seen_ts"), pod.lastSeenTs); -} -void JsonObjectConverter<Device>::fillFrom(const QJsonObject& jo, - Device& result) +} + +void JsonObjectConverter<Device>::fillFrom(const QJsonObject& jo, Device& result) { fromJson(jo.value("device_id"_ls), result.deviceId); fromJson(jo.value("display_name"_ls), result.displayName); fromJson(jo.value("last_seen_ip"_ls), result.lastSeenIp); fromJson(jo.value("last_seen_ts"_ls), result.lastSeenTs); + } + + + diff --git a/lib/csapi/definitions/client_device.h b/lib/csapi/definitions/client_device.h index b473a037..7c63a9b6 100644 --- a/lib/csapi/definitions/client_device.h +++ b/lib/csapi/definitions/client_device.h @@ -4,31 +4,37 @@ #pragma once + + #include "converters.h" #include "converters.h" -namespace QMatrixClient { - // Data structures - - /// A client device - struct Device { - /// Identifier of this device. - QString deviceId; - /// Display name set by the user for this device. Absent if no name has - /// been set. - QString displayName; - /// The IP address where this device was last seen. (May be a few - /// minutes out of date, for efficiency reasons). - QString lastSeenIp; - /// The timestamp (in milliseconds since the unix epoch) when this - /// devices was last seen. (May be a few minutes out of date, for - /// efficiency reasons). - Omittable<qint64> lastSeenTs; - }; - template <> struct JsonObjectConverter<Device> { - static void dumpTo(QJsonObject& jo, const Device& pod); - static void fillFrom(const QJsonObject& jo, Device& pod); - }; +namespace QMatrixClient +{ + +// Data structures + +/// A client device +struct Device +{ + /// Identifier of this device. + QString deviceId; + /// Display name set by the user for this device. Absent if no name has beenset. + QString displayName; + /// The IP address where this device was last seen. (May be a few minutes outof date, for efficiency reasons). + QString lastSeenIp; + /// The timestamp (in milliseconds since the unix epoch) when this deviceswas last seen. (May be a few minutes out of date, for efficiencyreasons). + Omittable<qint64> lastSeenTs; + + +}; + +template <> struct JsonObjectConverter<Device> +{ + static void dumpTo(QJsonObject& jo, const Device& pod); + static void fillFrom(const QJsonObject& jo, Device& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/device_keys.cpp b/lib/csapi/definitions/device_keys.cpp index cc5262b7..ffe0cfbe 100644 --- a/lib/csapi/definitions/device_keys.cpp +++ b/lib/csapi/definitions/device_keys.cpp @@ -4,24 +4,29 @@ #include "device_keys.h" + using namespace QMatrixClient; -void JsonObjectConverter<DeviceKeys>::dumpTo(QJsonObject& jo, - const DeviceKeys& pod) + +void JsonObjectConverter<DeviceKeys>::dumpTo(QJsonObject& jo, const DeviceKeys& pod) { addParam<>(jo, QStringLiteral("user_id"), pod.userId); addParam<>(jo, QStringLiteral("device_id"), pod.deviceId); addParam<>(jo, QStringLiteral("algorithms"), pod.algorithms); addParam<>(jo, QStringLiteral("keys"), pod.keys); addParam<>(jo, QStringLiteral("signatures"), pod.signatures); -} -void JsonObjectConverter<DeviceKeys>::fillFrom(const QJsonObject& jo, - DeviceKeys& result) +} + +void JsonObjectConverter<DeviceKeys>::fillFrom(const QJsonObject& jo, DeviceKeys& result) { fromJson(jo.value("user_id"_ls), result.userId); fromJson(jo.value("device_id"_ls), result.deviceId); fromJson(jo.value("algorithms"_ls), result.algorithms); fromJson(jo.value("keys"_ls), result.keys); fromJson(jo.value("signatures"_ls), result.signatures); + } + + + diff --git a/lib/csapi/definitions/device_keys.h b/lib/csapi/definitions/device_keys.h index 6c417ce7..c86db46a 100644 --- a/lib/csapi/definitions/device_keys.h +++ b/lib/csapi/definitions/device_keys.h @@ -4,38 +4,39 @@ #pragma once + + #include "converters.h" #include <QtCore/QHash> -namespace QMatrixClient { - // Data structures - - /// Device identity keys - struct DeviceKeys { - /// The ID of the user the device belongs to. Must match the user ID - /// used when logging in. - QString userId; - /// The ID of the device these keys belong to. Must match the device ID - /// used when logging in. - QString deviceId; - /// The encryption algorithms supported by this device. - QStringList algorithms; - /// Public identity keys. The names of the properties should be in the - /// format ``<algorithm>:<device_id>``. The keys themselves should be - /// encoded as specified by the key algorithm. - QHash<QString, QString> keys; - /// Signatures for the device key object. A map from user ID, to a map - /// from - /// ``<algorithm>:<device_id>`` to the signature. - /// - /// The signature is calculated using the process described at `Signing - /// JSON`_. - QHash<QString, QHash<QString, QString>> signatures; - }; - template <> struct JsonObjectConverter<DeviceKeys> { - static void dumpTo(QJsonObject& jo, const DeviceKeys& pod); - static void fillFrom(const QJsonObject& jo, DeviceKeys& pod); - }; +namespace QMatrixClient +{ + +// Data structures + +/// Device identity keys +struct DeviceKeys +{ + /// The ID of the user the device belongs to. Must match the user ID usedwhen logging in. + QString userId; + /// The ID of the device these keys belong to. Must match the device ID usedwhen logging in. + QString deviceId; + /// The encryption algorithms supported by this device. + QStringList algorithms; + /// Public identity keys. The names of the properties should be in theformat ``<algorithm>:<device_id>``. The keys themselves should beencoded as specified by the key algorithm. + QHash<QString, QString> keys; + /// Signatures for the device key object. A map from user ID, to a map from``<algorithm>:<device_id>`` to the signature.The signature is calculated using the process described at `SigningJSON`_. + QHash<QString, QHash<QString, QString>> signatures; + + +}; + +template <> struct JsonObjectConverter<DeviceKeys> +{ + static void dumpTo(QJsonObject& jo, const DeviceKeys& pod); + static void fillFrom(const QJsonObject& jo, DeviceKeys& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/event_filter.cpp b/lib/csapi/definitions/event_filter.cpp index 9b2c7a33..8be98c94 100644 --- a/lib/csapi/definitions/event_filter.cpp +++ b/lib/csapi/definitions/event_filter.cpp @@ -4,24 +4,29 @@ #include "event_filter.h" + using namespace QMatrixClient; -void JsonObjectConverter<EventFilter>::dumpTo(QJsonObject& jo, - const EventFilter& pod) + +void JsonObjectConverter<EventFilter>::dumpTo(QJsonObject& jo, const EventFilter& pod) { addParam<IfNotEmpty>(jo, QStringLiteral("limit"), pod.limit); addParam<IfNotEmpty>(jo, QStringLiteral("not_senders"), pod.notSenders); addParam<IfNotEmpty>(jo, QStringLiteral("not_types"), pod.notTypes); addParam<IfNotEmpty>(jo, QStringLiteral("senders"), pod.senders); addParam<IfNotEmpty>(jo, QStringLiteral("types"), pod.types); -} -void JsonObjectConverter<EventFilter>::fillFrom(const QJsonObject& jo, - EventFilter& result) +} + +void JsonObjectConverter<EventFilter>::fillFrom(const QJsonObject& jo, EventFilter& result) { fromJson(jo.value("limit"_ls), result.limit); fromJson(jo.value("not_senders"_ls), result.notSenders); fromJson(jo.value("not_types"_ls), result.notTypes); fromJson(jo.value("senders"_ls), result.senders); fromJson(jo.value("types"_ls), result.types); + } + + + diff --git a/lib/csapi/definitions/event_filter.h b/lib/csapi/definitions/event_filter.h index 5a1a831b..b8b2a983 100644 --- a/lib/csapi/definitions/event_filter.h +++ b/lib/csapi/definitions/event_filter.h @@ -4,36 +4,39 @@ #pragma once + + #include "converters.h" #include "converters.h" -namespace QMatrixClient { - // Data structures - - struct EventFilter { - /// The maximum number of events to return. - Omittable<int> limit; - /// A list of sender IDs to exclude. If this list is absent then no - /// senders are excluded. A matching sender will be excluded even if it - /// is listed in the ``'senders'`` filter. - QStringList notSenders; - /// A list of event types to exclude. If this list is absent then no - /// event types are excluded. A matching type will be excluded even if - /// it is listed in the ``'types'`` filter. A '*' can be used as a - /// wildcard to match any sequence of characters. - QStringList notTypes; - /// A list of senders IDs to include. If this list is absent then all - /// senders are included. - QStringList senders; - /// A list of event types to include. If this list is absent then all - /// event types are included. A ``'*'`` can be used as a wildcard to - /// match any sequence of characters. - QStringList types; - }; - template <> struct JsonObjectConverter<EventFilter> { - static void dumpTo(QJsonObject& jo, const EventFilter& pod); - static void fillFrom(const QJsonObject& jo, EventFilter& pod); - }; +namespace QMatrixClient +{ + +// Data structures + + +struct EventFilter +{ + /// The maximum number of events to return. + Omittable<int> limit; + /// A list of sender IDs to exclude. If this list is absent then no senders are excluded. A matching sender will be excluded even if it is listed in the ``'senders'`` filter. + QStringList notSenders; + /// A list of event types to exclude. If this list is absent then no event types are excluded. A matching type will be excluded even if it is listed in the ``'types'`` filter. A '*' can be used as a wildcard to match any sequence of characters. + QStringList notTypes; + /// A list of senders IDs to include. If this list is absent then all senders are included. + QStringList senders; + /// A list of event types to include. If this list is absent then all event types are included. A ``'*'`` can be used as a wildcard to match any sequence of characters. + QStringList types; + + +}; + +template <> struct JsonObjectConverter<EventFilter> +{ + static void dumpTo(QJsonObject& jo, const EventFilter& pod); + static void fillFrom(const QJsonObject& jo, EventFilter& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/public_rooms_response.cpp b/lib/csapi/definitions/public_rooms_response.cpp index 199a7a93..2c03b7d3 100644 --- a/lib/csapi/definitions/public_rooms_response.cpp +++ b/lib/csapi/definitions/public_rooms_response.cpp @@ -4,14 +4,14 @@ #include "public_rooms_response.h" + using namespace QMatrixClient; -void JsonObjectConverter<PublicRoomsChunk>::dumpTo(QJsonObject& jo, - const PublicRoomsChunk& pod) + +void JsonObjectConverter<PublicRoomsChunk>::dumpTo(QJsonObject& jo, const PublicRoomsChunk& pod) { addParam<IfNotEmpty>(jo, QStringLiteral("aliases"), pod.aliases); - addParam<IfNotEmpty>(jo, QStringLiteral("canonical_alias"), - pod.canonicalAlias); + addParam<IfNotEmpty>(jo, QStringLiteral("canonical_alias"), pod.canonicalAlias); addParam<IfNotEmpty>(jo, QStringLiteral("name"), pod.name); addParam<>(jo, QStringLiteral("num_joined_members"), pod.numJoinedMembers); addParam<>(jo, QStringLiteral("room_id"), pod.roomId); @@ -19,10 +19,10 @@ void JsonObjectConverter<PublicRoomsChunk>::dumpTo(QJsonObject& jo, addParam<>(jo, QStringLiteral("world_readable"), pod.worldReadable); addParam<>(jo, QStringLiteral("guest_can_join"), pod.guestCanJoin); addParam<IfNotEmpty>(jo, QStringLiteral("avatar_url"), pod.avatarUrl); -} -void JsonObjectConverter<PublicRoomsChunk>::fillFrom(const QJsonObject& jo, - PublicRoomsChunk& result) +} + +void JsonObjectConverter<PublicRoomsChunk>::fillFrom(const QJsonObject& jo, PublicRoomsChunk& result) { fromJson(jo.value("aliases"_ls), result.aliases); fromJson(jo.value("canonical_alias"_ls), result.canonicalAlias); @@ -33,24 +33,28 @@ void JsonObjectConverter<PublicRoomsChunk>::fillFrom(const QJsonObject& jo, fromJson(jo.value("world_readable"_ls), result.worldReadable); fromJson(jo.value("guest_can_join"_ls), result.guestCanJoin); fromJson(jo.value("avatar_url"_ls), result.avatarUrl); + } + -void JsonObjectConverter<PublicRoomsResponse>::dumpTo( - QJsonObject& jo, const PublicRoomsResponse& pod) + +void JsonObjectConverter<PublicRoomsResponse>::dumpTo(QJsonObject& jo, const PublicRoomsResponse& pod) { addParam<>(jo, QStringLiteral("chunk"), pod.chunk); addParam<IfNotEmpty>(jo, QStringLiteral("next_batch"), pod.nextBatch); addParam<IfNotEmpty>(jo, QStringLiteral("prev_batch"), pod.prevBatch); - addParam<IfNotEmpty>(jo, QStringLiteral("total_room_count_estimate"), - pod.totalRoomCountEstimate); -} + addParam<IfNotEmpty>(jo, QStringLiteral("total_room_count_estimate"), pod.totalRoomCountEstimate); -void JsonObjectConverter<PublicRoomsResponse>::fillFrom( - const QJsonObject& jo, PublicRoomsResponse& result) +} + +void JsonObjectConverter<PublicRoomsResponse>::fillFrom(const QJsonObject& jo, PublicRoomsResponse& result) { fromJson(jo.value("chunk"_ls), result.chunk); fromJson(jo.value("next_batch"_ls), result.nextBatch); fromJson(jo.value("prev_batch"_ls), result.prevBatch); - fromJson(jo.value("total_room_count_estimate"_ls), - result.totalRoomCountEstimate); + fromJson(jo.value("total_room_count_estimate"_ls), result.totalRoomCountEstimate); + } + + + diff --git a/lib/csapi/definitions/public_rooms_response.h b/lib/csapi/definitions/public_rooms_response.h index 6d8caf98..d282a592 100644 --- a/lib/csapi/definitions/public_rooms_response.h +++ b/lib/csapi/definitions/public_rooms_response.h @@ -4,60 +4,68 @@ #pragma once + + #include "converters.h" #include "converters.h" #include <QtCore/QVector> -namespace QMatrixClient { - // Data structures - - struct PublicRoomsChunk { - /// Aliases of the room. May be empty. - QStringList aliases; - /// The canonical alias of the room, if any. - QString canonicalAlias; - /// The name of the room, if any. - QString name; - /// The number of members joined to the room. - int numJoinedMembers; - /// The ID of the room. - QString roomId; - /// The topic of the room, if any. - QString topic; - /// Whether the room may be viewed by guest users without joining. - bool worldReadable; - /// Whether guest users may join the room and participate in it. - /// If they can, they will be subject to ordinary power level - /// rules like any other user. - bool guestCanJoin; - /// The URL for the room's avatar, if one is set. - QString avatarUrl; - }; - template <> struct JsonObjectConverter<PublicRoomsChunk> { - static void dumpTo(QJsonObject& jo, const PublicRoomsChunk& pod); - static void fillFrom(const QJsonObject& jo, PublicRoomsChunk& pod); - }; - - /// A list of the rooms on the server. - struct PublicRoomsResponse { - /// A paginated chunk of public rooms. - QVector<PublicRoomsChunk> chunk; - /// A pagination token for the response. The absence of this token - /// means there are no more results to fetch and the client should - /// stop paginating. - QString nextBatch; - /// A pagination token that allows fetching previous results. The - /// absence of this token means there are no results before this - /// batch, i.e. this is the first batch. - QString prevBatch; - /// An estimate on the total number of public rooms, if the - /// server has an estimate. - Omittable<int> totalRoomCountEstimate; - }; - template <> struct JsonObjectConverter<PublicRoomsResponse> { - static void dumpTo(QJsonObject& jo, const PublicRoomsResponse& pod); - static void fillFrom(const QJsonObject& jo, PublicRoomsResponse& pod); - }; +namespace QMatrixClient +{ + +// Data structures + + +struct PublicRoomsChunk +{ + /// Aliases of the room. May be empty. + QStringList aliases; + /// The canonical alias of the room, if any. + QString canonicalAlias; + /// The name of the room, if any. + QString name; + /// The number of members joined to the room. + int numJoinedMembers; + /// The ID of the room. + QString roomId; + /// The topic of the room, if any. + QString topic; + /// Whether the room may be viewed by guest users without joining. + bool worldReadable; + /// Whether guest users may join the room and participate in it.If they can, they will be subject to ordinary power levelrules like any other user. + bool guestCanJoin; + /// The URL for the room's avatar, if one is set. + QString avatarUrl; + + +}; + +template <> struct JsonObjectConverter<PublicRoomsChunk> +{ + static void dumpTo(QJsonObject& jo, const PublicRoomsChunk& pod); + static void fillFrom(const QJsonObject& jo, PublicRoomsChunk& pod);}; + +/// A list of the rooms on the server. +struct PublicRoomsResponse +{ + /// A paginated chunk of public rooms. + QVector<PublicRoomsChunk> chunk; + /// A pagination token for the response. The absence of this tokenmeans there are no more results to fetch and the client shouldstop paginating. + QString nextBatch; + /// A pagination token that allows fetching previous results. Theabsence of this token means there are no results before thisbatch, i.e. this is the first batch. + QString prevBatch; + /// An estimate on the total number of public rooms, if theserver has an estimate. + Omittable<int> totalRoomCountEstimate; + + +}; + +template <> struct JsonObjectConverter<PublicRoomsResponse> +{ + static void dumpTo(QJsonObject& jo, const PublicRoomsResponse& pod); + static void fillFrom(const QJsonObject& jo, PublicRoomsResponse& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/push_condition.cpp b/lib/csapi/definitions/push_condition.cpp index 5bcb845e..86b3107e 100644 --- a/lib/csapi/definitions/push_condition.cpp +++ b/lib/csapi/definitions/push_condition.cpp @@ -4,22 +4,27 @@ #include "push_condition.h" + using namespace QMatrixClient; -void JsonObjectConverter<PushCondition>::dumpTo(QJsonObject& jo, - const PushCondition& pod) + +void JsonObjectConverter<PushCondition>::dumpTo(QJsonObject& jo, const PushCondition& pod) { addParam<>(jo, QStringLiteral("kind"), pod.kind); addParam<IfNotEmpty>(jo, QStringLiteral("key"), pod.key); addParam<IfNotEmpty>(jo, QStringLiteral("pattern"), pod.pattern); addParam<IfNotEmpty>(jo, QStringLiteral("is"), pod.is); -} -void JsonObjectConverter<PushCondition>::fillFrom(const QJsonObject& jo, - PushCondition& result) +} + +void JsonObjectConverter<PushCondition>::fillFrom(const QJsonObject& jo, PushCondition& result) { fromJson(jo.value("kind"_ls), result.kind); fromJson(jo.value("key"_ls), result.key); fromJson(jo.value("pattern"_ls), result.pattern); fromJson(jo.value("is"_ls), result.is); + } + + + diff --git a/lib/csapi/definitions/push_condition.h b/lib/csapi/definitions/push_condition.h index a4e44e93..e61fb24e 100644 --- a/lib/csapi/definitions/push_condition.h +++ b/lib/csapi/definitions/push_condition.h @@ -4,31 +4,36 @@ #pragma once + + #include "converters.h" -namespace QMatrixClient { - // Data structures - - struct PushCondition { - QString kind; - /// Required for ``event_match`` conditions. The dot-separated field of - /// the event to match. - QString key; - /// Required for ``event_match`` conditions. The glob-style pattern to - /// match against. Patterns with no special glob characters should be - /// treated as having asterisks prepended and appended when testing the - /// condition. - QString pattern; - /// Required for ``room_member_count`` conditions. A decimal integer - /// optionally prefixed by one of, ==, <, >, >= or <=. A prefix of < - /// matches rooms where the member count is strictly less than the given - /// number and so forth. If no prefix is present, this parameter - /// defaults to ==. - QString is; - }; - template <> struct JsonObjectConverter<PushCondition> { - static void dumpTo(QJsonObject& jo, const PushCondition& pod); - static void fillFrom(const QJsonObject& jo, PushCondition& pod); - }; + +namespace QMatrixClient +{ + +// Data structures + + +struct PushCondition +{ + + QString kind; + /// Required for ``event_match`` conditions. The dot-separated field of theevent to match. + QString key; + /// Required for ``event_match`` conditions. The glob-style pattern tomatch against. Patterns with no special glob characters should betreated as having asterisks prepended and appended when testing thecondition. + QString pattern; + /// Required for ``room_member_count`` conditions. A decimal integeroptionally prefixed by one of, ==, <, >, >= or <=. A prefix of < matchesrooms where the member count is strictly less than the given number andso forth. If no prefix is present, this parameter defaults to ==. + QString is; + + +}; + +template <> struct JsonObjectConverter<PushCondition> +{ + static void dumpTo(QJsonObject& jo, const PushCondition& pod); + static void fillFrom(const QJsonObject& jo, PushCondition& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/push_rule.cpp b/lib/csapi/definitions/push_rule.cpp index fc2be2c7..bfa8a7ef 100644 --- a/lib/csapi/definitions/push_rule.cpp +++ b/lib/csapi/definitions/push_rule.cpp @@ -4,8 +4,10 @@ #include "push_rule.h" + using namespace QMatrixClient; + void JsonObjectConverter<PushRule>::dumpTo(QJsonObject& jo, const PushRule& pod) { addParam<>(jo, QStringLiteral("actions"), pod.actions); @@ -14,10 +16,10 @@ void JsonObjectConverter<PushRule>::dumpTo(QJsonObject& jo, const PushRule& pod) addParam<>(jo, QStringLiteral("rule_id"), pod.ruleId); addParam<IfNotEmpty>(jo, QStringLiteral("conditions"), pod.conditions); addParam<IfNotEmpty>(jo, QStringLiteral("pattern"), pod.pattern); -} -void JsonObjectConverter<PushRule>::fillFrom(const QJsonObject& jo, - PushRule& result) +} + +void JsonObjectConverter<PushRule>::fillFrom(const QJsonObject& jo, PushRule& result) { fromJson(jo.value("actions"_ls), result.actions); fromJson(jo.value("default"_ls), result.isDefault); @@ -25,4 +27,8 @@ void JsonObjectConverter<PushRule>::fillFrom(const QJsonObject& jo, fromJson(jo.value("rule_id"_ls), result.ruleId); fromJson(jo.value("conditions"_ls), result.conditions); fromJson(jo.value("pattern"_ls), result.pattern); + } + + + diff --git a/lib/csapi/definitions/push_rule.h b/lib/csapi/definitions/push_rule.h index d8d2cc0f..98bd904d 100644 --- a/lib/csapi/definitions/push_rule.h +++ b/lib/csapi/definitions/push_rule.h @@ -4,37 +4,45 @@ #pragma once + + #include "converters.h" #include "converters.h" +#include <QtCore/QVariant> #include "csapi/definitions/push_condition.h" #include <QtCore/QJsonObject> -#include <QtCore/QVariant> #include <QtCore/QVector> -namespace QMatrixClient { - // Data structures - - struct PushRule { - /// The actions to perform when this rule is matched. - QVector<QVariant> actions; - /// Whether this is a default rule, or has been set explicitly. - bool isDefault; - /// Whether the push rule is enabled or not. - bool enabled; - /// The ID of this rule. - QString ruleId; - /// The conditions that must hold true for an event in order for a rule - /// to be applied to an event. A rule with no conditions always matches. - /// Only applicable to ``underride`` and ``override`` rules. - QVector<PushCondition> conditions; - /// The glob-style pattern to match against. Only applicable to - /// ``content`` rules. - QString pattern; - }; - template <> struct JsonObjectConverter<PushRule> { - static void dumpTo(QJsonObject& jo, const PushRule& pod); - static void fillFrom(const QJsonObject& jo, PushRule& pod); - }; +namespace QMatrixClient +{ + +// Data structures + + +struct PushRule +{ + /// The actions to perform when this rule is matched. + QVector<QVariant> actions; + /// Whether this is a default rule, or has been set explicitly. + bool isDefault; + /// Whether the push rule is enabled or not. + bool enabled; + /// The ID of this rule. + QString ruleId; + /// The conditions that must hold true for an event in order for a rule to beapplied to an event. A rule with no conditions always matches. Onlyapplicable to ``underride`` and ``override`` rules. + QVector<PushCondition> conditions; + /// The glob-style pattern to match against. Only applicable to ``content``rules. + QString pattern; + + +}; + +template <> struct JsonObjectConverter<PushRule> +{ + static void dumpTo(QJsonObject& jo, const PushRule& pod); + static void fillFrom(const QJsonObject& jo, PushRule& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/push_ruleset.cpp b/lib/csapi/definitions/push_ruleset.cpp index 6f48d27b..4754e07b 100644 --- a/lib/csapi/definitions/push_ruleset.cpp +++ b/lib/csapi/definitions/push_ruleset.cpp @@ -4,24 +4,29 @@ #include "push_ruleset.h" + using namespace QMatrixClient; -void JsonObjectConverter<PushRuleset>::dumpTo(QJsonObject& jo, - const PushRuleset& pod) + +void JsonObjectConverter<PushRuleset>::dumpTo(QJsonObject& jo, const PushRuleset& pod) { addParam<IfNotEmpty>(jo, QStringLiteral("content"), pod.content); addParam<IfNotEmpty>(jo, QStringLiteral("override"), pod.override); addParam<IfNotEmpty>(jo, QStringLiteral("room"), pod.room); addParam<IfNotEmpty>(jo, QStringLiteral("sender"), pod.sender); addParam<IfNotEmpty>(jo, QStringLiteral("underride"), pod.underride); -} -void JsonObjectConverter<PushRuleset>::fillFrom(const QJsonObject& jo, - PushRuleset& result) +} + +void JsonObjectConverter<PushRuleset>::fillFrom(const QJsonObject& jo, PushRuleset& result) { fromJson(jo.value("content"_ls), result.content); fromJson(jo.value("override"_ls), result.override); fromJson(jo.value("room"_ls), result.room); fromJson(jo.value("sender"_ls), result.sender); fromJson(jo.value("underride"_ls), result.underride); + } + + + diff --git a/lib/csapi/definitions/push_ruleset.h b/lib/csapi/definitions/push_ruleset.h index b2f791c4..e1a2c142 100644 --- a/lib/csapi/definitions/push_ruleset.h +++ b/lib/csapi/definitions/push_ruleset.h @@ -4,25 +4,41 @@ #pragma once -#include "converters.h" + #include "converters.h" + #include "csapi/definitions/push_rule.h" +#include "converters.h" #include <QtCore/QVector> -namespace QMatrixClient { - // Data structures - - struct PushRuleset { - QVector<PushRule> content; - QVector<PushRule> override; - QVector<PushRule> room; - QVector<PushRule> sender; - QVector<PushRule> underride; - }; - template <> struct JsonObjectConverter<PushRuleset> { - static void dumpTo(QJsonObject& jo, const PushRuleset& pod); - static void fillFrom(const QJsonObject& jo, PushRuleset& pod); - }; +namespace QMatrixClient +{ + +// Data structures + + +struct PushRuleset +{ + + QVector<PushRule> content; + + QVector<PushRule> override; + + QVector<PushRule> room; + + QVector<PushRule> sender; + + QVector<PushRule> underride; + + +}; + +template <> struct JsonObjectConverter<PushRuleset> +{ + static void dumpTo(QJsonObject& jo, const PushRuleset& pod); + static void fillFrom(const QJsonObject& jo, PushRuleset& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/room_event_filter.cpp b/lib/csapi/definitions/room_event_filter.cpp index bd38ebc7..fc859395 100644 --- a/lib/csapi/definitions/room_event_filter.cpp +++ b/lib/csapi/definitions/room_event_filter.cpp @@ -4,22 +4,27 @@ #include "room_event_filter.h" + using namespace QMatrixClient; -void JsonObjectConverter<RoomEventFilter>::dumpTo(QJsonObject& jo, - const RoomEventFilter& pod) + +void JsonObjectConverter<RoomEventFilter>::dumpTo(QJsonObject& jo, const RoomEventFilter& pod) { fillJson<EventFilter>(jo, pod); addParam<IfNotEmpty>(jo, QStringLiteral("not_rooms"), pod.notRooms); addParam<IfNotEmpty>(jo, QStringLiteral("rooms"), pod.rooms); addParam<IfNotEmpty>(jo, QStringLiteral("contains_url"), pod.containsUrl); -} -void JsonObjectConverter<RoomEventFilter>::fillFrom(const QJsonObject& jo, - RoomEventFilter& result) +} + +void JsonObjectConverter<RoomEventFilter>::fillFrom(const QJsonObject& jo, RoomEventFilter& result) { fillFromJson<EventFilter>(jo, result); fromJson(jo.value("not_rooms"_ls), result.notRooms); fromJson(jo.value("rooms"_ls), result.rooms); fromJson(jo.value("contains_url"_ls), result.containsUrl); + } + + + diff --git a/lib/csapi/definitions/room_event_filter.h b/lib/csapi/definitions/room_event_filter.h index 13c82341..92e210fe 100644 --- a/lib/csapi/definitions/room_event_filter.h +++ b/lib/csapi/definitions/room_event_filter.h @@ -4,30 +4,36 @@ #pragma once -#include "converters.h" + #include "converters.h" + #include "csapi/definitions/event_filter.h" +#include "converters.h" + +namespace QMatrixClient +{ + +// Data structures + + +struct RoomEventFilter : EventFilter +{ + /// A list of room IDs to exclude. If this list is absent then no rooms are excluded. A matching room will be excluded even if it is listed in the ``'rooms'`` filter. + QStringList notRooms; + /// A list of room IDs to include. If this list is absent then all rooms are included. + QStringList rooms; + /// If ``true``, includes only events with a ``url`` key in their content. If ``false``, excludes those events. If omitted, ``url`` key is not considered for filtering. + Omittable<bool> containsUrl; + + +}; + +template <> struct JsonObjectConverter<RoomEventFilter> +{ + static void dumpTo(QJsonObject& jo, const RoomEventFilter& pod); + static void fillFrom(const QJsonObject& jo, RoomEventFilter& pod);}; + -namespace QMatrixClient { - // Data structures - - struct RoomEventFilter : EventFilter { - /// A list of room IDs to exclude. If this list is absent then no rooms - /// are excluded. A matching room will be excluded even if it is listed - /// in the ``'rooms'`` filter. - QStringList notRooms; - /// A list of room IDs to include. If this list is absent then all rooms - /// are included. - QStringList rooms; - /// If ``true``, includes only events with a ``url`` key in their - /// content. If ``false``, excludes those events. If omitted, ``url`` - /// key is not considered for filtering. - Omittable<bool> containsUrl; - }; - template <> struct JsonObjectConverter<RoomEventFilter> { - static void dumpTo(QJsonObject& jo, const RoomEventFilter& pod); - static void fillFrom(const QJsonObject& jo, RoomEventFilter& pod); - }; } // namespace QMatrixClient diff --git a/lib/csapi/definitions/sync_filter.cpp b/lib/csapi/definitions/sync_filter.cpp index c06c16ca..a1ef53c5 100644 --- a/lib/csapi/definitions/sync_filter.cpp +++ b/lib/csapi/definitions/sync_filter.cpp @@ -4,29 +4,29 @@ #include "sync_filter.h" + using namespace QMatrixClient; -void JsonObjectConverter<StateFilter>::dumpTo(QJsonObject& jo, - const StateFilter& pod) + +void JsonObjectConverter<StateFilter>::dumpTo(QJsonObject& jo, const StateFilter& pod) { fillJson<RoomEventFilter>(jo, pod); - addParam<IfNotEmpty>(jo, QStringLiteral("lazy_load_members"), - pod.lazyLoadMembers); - addParam<IfNotEmpty>(jo, QStringLiteral("include_redundant_members"), - pod.includeRedundantMembers); -} + addParam<IfNotEmpty>(jo, QStringLiteral("lazy_load_members"), pod.lazyLoadMembers); + addParam<IfNotEmpty>(jo, QStringLiteral("include_redundant_members"), pod.includeRedundantMembers); -void JsonObjectConverter<StateFilter>::fillFrom(const QJsonObject& jo, - StateFilter& result) +} + +void JsonObjectConverter<StateFilter>::fillFrom(const QJsonObject& jo, StateFilter& result) { fillFromJson<RoomEventFilter>(jo, result); fromJson(jo.value("lazy_load_members"_ls), result.lazyLoadMembers); - fromJson(jo.value("include_redundant_members"_ls), - result.includeRedundantMembers); + fromJson(jo.value("include_redundant_members"_ls), result.includeRedundantMembers); + } + -void JsonObjectConverter<RoomFilter>::dumpTo(QJsonObject& jo, - const RoomFilter& pod) + +void JsonObjectConverter<RoomFilter>::dumpTo(QJsonObject& jo, const RoomFilter& pod) { addParam<IfNotEmpty>(jo, QStringLiteral("not_rooms"), pod.notRooms); addParam<IfNotEmpty>(jo, QStringLiteral("rooms"), pod.rooms); @@ -35,10 +35,10 @@ void JsonObjectConverter<RoomFilter>::dumpTo(QJsonObject& jo, addParam<IfNotEmpty>(jo, QStringLiteral("state"), pod.state); addParam<IfNotEmpty>(jo, QStringLiteral("timeline"), pod.timeline); addParam<IfNotEmpty>(jo, QStringLiteral("account_data"), pod.accountData); -} -void JsonObjectConverter<RoomFilter>::fillFrom(const QJsonObject& jo, - RoomFilter& result) +} + +void JsonObjectConverter<RoomFilter>::fillFrom(const QJsonObject& jo, RoomFilter& result) { fromJson(jo.value("not_rooms"_ls), result.notRooms); fromJson(jo.value("rooms"_ls), result.rooms); @@ -47,8 +47,11 @@ void JsonObjectConverter<RoomFilter>::fillFrom(const QJsonObject& jo, fromJson(jo.value("state"_ls), result.state); fromJson(jo.value("timeline"_ls), result.timeline); fromJson(jo.value("account_data"_ls), result.accountData); + } + + void JsonObjectConverter<Filter>::dumpTo(QJsonObject& jo, const Filter& pod) { addParam<IfNotEmpty>(jo, QStringLiteral("event_fields"), pod.eventFields); @@ -56,14 +59,18 @@ void JsonObjectConverter<Filter>::dumpTo(QJsonObject& jo, const Filter& pod) addParam<IfNotEmpty>(jo, QStringLiteral("presence"), pod.presence); addParam<IfNotEmpty>(jo, QStringLiteral("account_data"), pod.accountData); addParam<IfNotEmpty>(jo, QStringLiteral("room"), pod.room); -} -void JsonObjectConverter<Filter>::fillFrom(const QJsonObject& jo, - Filter& result) +} + +void JsonObjectConverter<Filter>::fillFrom(const QJsonObject& jo, Filter& result) { fromJson(jo.value("event_fields"_ls), result.eventFields); fromJson(jo.value("event_format"_ls), result.eventFormat); fromJson(jo.value("presence"_ls), result.presence); fromJson(jo.value("account_data"_ls), result.accountData); fromJson(jo.value("room"_ls), result.room); + } + + + diff --git a/lib/csapi/definitions/sync_filter.h b/lib/csapi/definitions/sync_filter.h index d523c388..551ba2fd 100644 --- a/lib/csapi/definitions/sync_filter.h +++ b/lib/csapi/definitions/sync_filter.h @@ -4,94 +4,83 @@ #pragma once -#include "converters.h" + #include "converters.h" + #include "csapi/definitions/event_filter.h" +#include "converters.h" #include "csapi/definitions/room_event_filter.h" -namespace QMatrixClient { - // Data structures +namespace QMatrixClient +{ + +// Data structures + +/// The state events to include for rooms. +struct StateFilter : RoomEventFilter +{ + /// If ``true``, the only ``m.room.member`` events returned inthe ``state`` section of the ``/sync`` response are thosewhich are definitely necessary for a client to displaythe ``sender`` of the timeline events in that response.If ``false``, ``m.room.member`` events are not filtered.By default, servers should suppress duplicate redundantlazy-loaded ``m.room.member`` events from being sent to a givenclient across multiple calls to ``/sync``, given that most clientscache membership events (see ``include_redundant_members``to change this behaviour). + Omittable<bool> lazyLoadMembers; + /// If ``true``, the ``state`` section of the ``/sync`` response willalways contain the ``m.room.member`` events required to displaythe ``sender`` of the timeline events in that response, assuming``lazy_load_members`` is enabled. This means that redundantduplicate member events may be returned across multiple calls to``/sync``. This is useful for naive clients who never trackmembership data. If ``false``, duplicate ``m.room.member`` eventsmay be suppressed by the server across multiple calls to ``/sync``.If ``lazy_load_members`` is ``false`` this field is ignored. + Omittable<bool> includeRedundantMembers; + + +}; + +template <> struct JsonObjectConverter<StateFilter> +{ + static void dumpTo(QJsonObject& jo, const StateFilter& pod); + static void fillFrom(const QJsonObject& jo, StateFilter& pod);}; +/// Filters to be applied to room data. +struct RoomFilter +{ + /// A list of room IDs to exclude. If this list is absent then no rooms are excluded. A matching room will be excluded even if it is listed in the ``'rooms'`` filter. This filter is applied before the filters in ``ephemeral``, ``state``, ``timeline`` or ``account_data`` + QStringList notRooms; + /// A list of room IDs to include. If this list is absent then all rooms are included. This filter is applied before the filters in ``ephemeral``, ``state``, ``timeline`` or ``account_data`` + QStringList rooms; + /// The events that aren't recorded in the room history, e.g. typing and receipts, to include for rooms. + Omittable<RoomEventFilter> ephemeral; + /// Include rooms that the user has left in the sync, default false + Omittable<bool> includeLeave; /// The state events to include for rooms. - struct StateFilter : RoomEventFilter { - /// If ``true``, the only ``m.room.member`` events returned in - /// the ``state`` section of the ``/sync`` response are those - /// which are definitely necessary for a client to display - /// the ``sender`` of the timeline events in that response. - /// If ``false``, ``m.room.member`` events are not filtered. - /// By default, servers should suppress duplicate redundant - /// lazy-loaded ``m.room.member`` events from being sent to a given - /// client across multiple calls to ``/sync``, given that most clients - /// cache membership events (see ``include_redundant_members`` - /// to change this behaviour). - Omittable<bool> lazyLoadMembers; - /// If ``true``, the ``state`` section of the ``/sync`` response will - /// always contain the ``m.room.member`` events required to display - /// the ``sender`` of the timeline events in that response, assuming - /// ``lazy_load_members`` is enabled. This means that redundant - /// duplicate member events may be returned across multiple calls to - /// ``/sync``. This is useful for naive clients who never track - /// membership data. If ``false``, duplicate ``m.room.member`` events - /// may be suppressed by the server across multiple calls to ``/sync``. - /// If ``lazy_load_members`` is ``false`` this field is ignored. - Omittable<bool> includeRedundantMembers; - }; - template <> struct JsonObjectConverter<StateFilter> { - static void dumpTo(QJsonObject& jo, const StateFilter& pod); - static void fillFrom(const QJsonObject& jo, StateFilter& pod); - }; + Omittable<StateFilter> state; + /// The message and state update events to include for rooms. + Omittable<RoomEventFilter> timeline; + /// The per user account data to include for rooms. + Omittable<RoomEventFilter> accountData; + +}; + +template <> struct JsonObjectConverter<RoomFilter> +{ + static void dumpTo(QJsonObject& jo, const RoomFilter& pod); + static void fillFrom(const QJsonObject& jo, RoomFilter& pod);}; + + +struct Filter +{ + /// List of event fields to include. If this list is absent then all fields are included. The entries may include '.' charaters to indicate sub-fields. So ['content.body'] will include the 'body' field of the 'content' object. A literal '.' character in a field name may be escaped using a '\\'. A server may include more fields than were requested. + QStringList eventFields; + /// The format to use for events. 'client' will return the events in a format suitable for clients. 'federation' will return the raw event as receieved over federation. The default is 'client'. + QString eventFormat; + /// The presence updates to include. + Omittable<EventFilter> presence; + /// The user account data that isn't associated with rooms to include. + Omittable<EventFilter> accountData; /// Filters to be applied to room data. - struct RoomFilter { - /// A list of room IDs to exclude. If this list is absent then no rooms - /// are excluded. A matching room will be excluded even if it is listed - /// in the ``'rooms'`` filter. This filter is applied before the filters - /// in ``ephemeral``, ``state``, ``timeline`` or ``account_data`` - QStringList notRooms; - /// A list of room IDs to include. If this list is absent then all rooms - /// are included. This filter is applied before the filters in - /// ``ephemeral``, ``state``, ``timeline`` or ``account_data`` - QStringList rooms; - /// The events that aren't recorded in the room history, e.g. typing and - /// receipts, to include for rooms. - Omittable<RoomEventFilter> ephemeral; - /// Include rooms that the user has left in the sync, default false - Omittable<bool> includeLeave; - /// The state events to include for rooms. - Omittable<StateFilter> state; - /// The message and state update events to include for rooms. - Omittable<RoomEventFilter> timeline; - /// The per user account data to include for rooms. - Omittable<RoomEventFilter> accountData; - }; - template <> struct JsonObjectConverter<RoomFilter> { - static void dumpTo(QJsonObject& jo, const RoomFilter& pod); - static void fillFrom(const QJsonObject& jo, RoomFilter& pod); - }; - - struct Filter { - /// List of event fields to include. If this list is absent then all - /// fields are included. The entries may include '.' charaters to - /// indicate sub-fields. So ['content.body'] will include the 'body' - /// field of the 'content' object. A literal '.' character in a field - /// name may be escaped using a '\\'. A server may include more fields - /// than were requested. - QStringList eventFields; - /// The format to use for events. 'client' will return the events in a - /// format suitable for clients. 'federation' will return the raw event - /// as receieved over federation. The default is 'client'. - QString eventFormat; - /// The presence updates to include. - Omittable<EventFilter> presence; - /// The user account data that isn't associated with rooms to include. - Omittable<EventFilter> accountData; - /// Filters to be applied to room data. - Omittable<RoomFilter> room; - }; - template <> struct JsonObjectConverter<Filter> { - static void dumpTo(QJsonObject& jo, const Filter& pod); - static void fillFrom(const QJsonObject& jo, Filter& pod); - }; + Omittable<RoomFilter> room; + + +}; + +template <> struct JsonObjectConverter<Filter> +{ + static void dumpTo(QJsonObject& jo, const Filter& pod); + static void fillFrom(const QJsonObject& jo, Filter& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/user_identifier.cpp b/lib/csapi/definitions/user_identifier.cpp index 998f1b85..02201179 100644 --- a/lib/csapi/definitions/user_identifier.cpp +++ b/lib/csapi/definitions/user_identifier.cpp @@ -4,19 +4,23 @@ #include "user_identifier.h" + using namespace QMatrixClient; -void JsonObjectConverter<UserIdentifier>::dumpTo(QJsonObject& jo, - const UserIdentifier& pod) + +void JsonObjectConverter<UserIdentifier>::dumpTo(QJsonObject& jo, const UserIdentifier& pod) { fillJson(jo, pod.additionalProperties); addParam<>(jo, QStringLiteral("type"), pod.type); -} -void JsonObjectConverter<UserIdentifier>::fillFrom(QJsonObject jo, - UserIdentifier& result) +} + +void JsonObjectConverter<UserIdentifier>::fillFrom(QJsonObject jo, UserIdentifier& result) { fromJson(jo.take("type"_ls), result.type); - fromJson(jo, result.additionalProperties); + } + + + diff --git a/lib/csapi/definitions/user_identifier.h b/lib/csapi/definitions/user_identifier.h index 4a9ce684..831ba191 100644 --- a/lib/csapi/definitions/user_identifier.h +++ b/lib/csapi/definitions/user_identifier.h @@ -4,24 +4,34 @@ #pragma once + + #include "converters.h" #include <QtCore/QVariant> -namespace QMatrixClient { - // Data structures +namespace QMatrixClient +{ + +// Data structures + +/// Identification information for a user +struct UserIdentifier +{ + /// The type of identification. See `Identifier types`_ for supported values and additional property descriptions. + QString type; + /// Identification information for a user - struct UserIdentifier { - /// The type of identification. See `Identifier types`_ for supported - /// values and additional property descriptions. - QString type; - /// Identification information for a user - QVariantHash additionalProperties; - }; - template <> struct JsonObjectConverter<UserIdentifier> { - static void dumpTo(QJsonObject& jo, const UserIdentifier& pod); - static void fillFrom(QJsonObject jo, UserIdentifier& pod); - }; + QVariantHash additionalProperties; + +}; + +template <> struct JsonObjectConverter<UserIdentifier> +{ + static void dumpTo(QJsonObject& jo, const UserIdentifier& pod); + static void fillFrom(QJsonObject jo, UserIdentifier& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/wellknown/full.cpp b/lib/csapi/definitions/wellknown/full.cpp index 35c0df5b..a2d71db0 100644 --- a/lib/csapi/definitions/wellknown/full.cpp +++ b/lib/csapi/definitions/wellknown/full.cpp @@ -4,22 +4,25 @@ #include "full.h" + using namespace QMatrixClient; -void JsonObjectConverter<DiscoveryInformation>::dumpTo( - QJsonObject& jo, const DiscoveryInformation& pod) + +void JsonObjectConverter<DiscoveryInformation>::dumpTo(QJsonObject& jo, const DiscoveryInformation& pod) { fillJson(jo, pod.additionalProperties); addParam<>(jo, QStringLiteral("m.homeserver"), pod.homeserver); - addParam<IfNotEmpty>(jo, QStringLiteral("m.identity_server"), - pod.identityServer); -} + addParam<IfNotEmpty>(jo, QStringLiteral("m.identity_server"), pod.identityServer); -void JsonObjectConverter<DiscoveryInformation>::fillFrom( - QJsonObject jo, DiscoveryInformation& result) +} + +void JsonObjectConverter<DiscoveryInformation>::fillFrom(QJsonObject jo, DiscoveryInformation& result) { fromJson(jo.take("m.homeserver"_ls), result.homeserver); fromJson(jo.take("m.identity_server"_ls), result.identityServer); - fromJson(jo, result.additionalProperties); + } + + + diff --git a/lib/csapi/definitions/wellknown/full.h b/lib/csapi/definitions/wellknown/full.h index 9b920eda..ef975969 100644 --- a/lib/csapi/definitions/wellknown/full.h +++ b/lib/csapi/definitions/wellknown/full.h @@ -4,32 +4,40 @@ #pragma once + + #include "converters.h" +#include <QtCore/QJsonObject> #include "converters.h" #include "csapi/definitions/wellknown/homeserver.h" #include "csapi/definitions/wellknown/identity_server.h" #include <QtCore/QHash> -#include <QtCore/QJsonObject> -namespace QMatrixClient { - // Data structures - - /// Used by clients to determine the homeserver, identity server, and other - /// optional components they should be interacting with. - struct DiscoveryInformation { - /// Used by clients to determine the homeserver, identity server, and - /// other optional components they should be interacting with. - HomeserverInformation homeserver; - /// Used by clients to determine the homeserver, identity server, and - /// other optional components they should be interacting with. - Omittable<IdentityServerInformation> identityServer; - /// Application-dependent keys using Java package naming convention. - QHash<QString, QJsonObject> additionalProperties; - }; - template <> struct JsonObjectConverter<DiscoveryInformation> { - static void dumpTo(QJsonObject& jo, const DiscoveryInformation& pod); - static void fillFrom(QJsonObject jo, DiscoveryInformation& pod); - }; +namespace QMatrixClient +{ + +// Data structures + +/// Used by clients to determine the homeserver, identity server, and other/// optional components they should be interacting with. +struct DiscoveryInformation +{ + /// Used by clients to determine the homeserver, identity server, and otheroptional components they should be interacting with. + HomeserverInformation homeserver; + /// Used by clients to determine the homeserver, identity server, and otheroptional components they should be interacting with. + Omittable<IdentityServerInformation> identityServer; + + + /// Application-dependent keys using Java package naming convention. + QHash<QString, QJsonObject> additionalProperties; + +}; + +template <> struct JsonObjectConverter<DiscoveryInformation> +{ + static void dumpTo(QJsonObject& jo, const DiscoveryInformation& pod); + static void fillFrom(QJsonObject jo, DiscoveryInformation& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/wellknown/homeserver.cpp b/lib/csapi/definitions/wellknown/homeserver.cpp index a7337520..a8a5077b 100644 --- a/lib/csapi/definitions/wellknown/homeserver.cpp +++ b/lib/csapi/definitions/wellknown/homeserver.cpp @@ -4,16 +4,21 @@ #include "homeserver.h" + using namespace QMatrixClient; -void JsonObjectConverter<HomeserverInformation>::dumpTo( - QJsonObject& jo, const HomeserverInformation& pod) + +void JsonObjectConverter<HomeserverInformation>::dumpTo(QJsonObject& jo, const HomeserverInformation& pod) { addParam<>(jo, QStringLiteral("base_url"), pod.baseUrl); -} -void JsonObjectConverter<HomeserverInformation>::fillFrom( - const QJsonObject& jo, HomeserverInformation& result) +} + +void JsonObjectConverter<HomeserverInformation>::fillFrom(const QJsonObject& jo, HomeserverInformation& result) { fromJson(jo.value("base_url"_ls), result.baseUrl); + } + + + diff --git a/lib/csapi/definitions/wellknown/homeserver.h b/lib/csapi/definitions/wellknown/homeserver.h index 8bd3c150..fe6af172 100644 --- a/lib/csapi/definitions/wellknown/homeserver.h +++ b/lib/csapi/definitions/wellknown/homeserver.h @@ -4,19 +4,30 @@ #pragma once + + #include "converters.h" -namespace QMatrixClient { - // Data structures - - /// Used by clients to discover homeserver information. - struct HomeserverInformation { - /// The base URL for the homeserver for client-server connections. - QString baseUrl; - }; - template <> struct JsonObjectConverter<HomeserverInformation> { - static void dumpTo(QJsonObject& jo, const HomeserverInformation& pod); - static void fillFrom(const QJsonObject& jo, HomeserverInformation& pod); - }; + +namespace QMatrixClient +{ + +// Data structures + +/// Used by clients to discover homeserver information. +struct HomeserverInformation +{ + /// The base URL for the homeserver for client-server connections. + QString baseUrl; + + +}; + +template <> struct JsonObjectConverter<HomeserverInformation> +{ + static void dumpTo(QJsonObject& jo, const HomeserverInformation& pod); + static void fillFrom(const QJsonObject& jo, HomeserverInformation& pod);}; + + } // namespace QMatrixClient diff --git a/lib/csapi/definitions/wellknown/identity_server.cpp b/lib/csapi/definitions/wellknown/identity_server.cpp index 46a614d8..a9fae614 100644 --- a/lib/csapi/definitions/wellknown/identity_server.cpp +++ b/lib/csapi/definitions/wellknown/identity_server.cpp @@ -4,16 +4,21 @@ #include "identity_server.h" + using namespace QMatrixClient; -void JsonObjectConverter<IdentityServerInformation>::dumpTo( - QJsonObject& jo, const IdentityServerInformation& pod) + +void JsonObjectConverter<IdentityServerInformation>::dumpTo(QJsonObject& jo, const IdentityServerInformation& pod) { addParam<>(jo, QStringLiteral("base_url"), pod.baseUrl); -} -void JsonObjectConverter<IdentityServerInformation>::fillFrom( - const QJsonObject& jo, IdentityServerInformation& result) +} + +void JsonObjectConverter<IdentityServerInformation>::fillFrom(const QJsonObject& jo, IdentityServerInformation& result) { fromJson(jo.value("base_url"_ls), result.baseUrl); + } + + + diff --git a/lib/csapi/definitions/wellknown/identity_server.h b/lib/csapi/definitions/wellknown/identity_server.h index fd53dfc1..4462f86e 100644 --- a/lib/csapi/definitions/wellknown/identity_server.h +++ b/lib/csapi/definitions/wellknown/identity_server.h @@ -4,21 +4,30 @@ #pragma once + + #include "converters.h" -namespace QMatrixClient { - // Data structures - - /// Used by clients to discover identity server information. - struct IdentityServerInformation { - /// The base URL for the identity server for client-server connections. - QString baseUrl; - }; - template <> struct JsonObjectConverter<IdentityServerInformation> { - static void dumpTo(QJsonObject& jo, - const IdentityServerInformation& pod); - static void fillFrom(const QJsonObject& jo, - IdentityServerInformation& pod); - }; + +namespace QMatrixClient +{ + +// Data structures + +/// Used by clients to discover identity server information. +struct IdentityServerInformation +{ + /// The base URL for the identity server for client-server connections. + QString baseUrl; + + +}; + +template <> struct JsonObjectConverter<IdentityServerInformation> +{ + static void dumpTo(QJsonObject& jo, const IdentityServerInformation& pod); + static void fillFrom(const QJsonObject& jo, IdentityServerInformation& pod);}; + + } // namespace QMatrixClient |