aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/definitions/public_rooms_response.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/definitions/public_rooms_response.h')
-rw-r--r--lib/csapi/definitions/public_rooms_response.h51
1 files changed, 43 insertions, 8 deletions
diff --git a/lib/csapi/definitions/public_rooms_response.h b/lib/csapi/definitions/public_rooms_response.h
index 36aa52b9..8f30e607 100644
--- a/lib/csapi/definitions/public_rooms_response.h
+++ b/lib/csapi/definitions/public_rooms_response.h
@@ -6,12 +6,8 @@
#include "converters.h"
-#include <QtCore/QVector>
-
namespace Quotient {
-// Data structures
-
struct PublicRoomsChunk {
/// Aliases of the room. May be empty.
QStringList aliases;
@@ -45,9 +41,34 @@ struct PublicRoomsChunk {
template <>
struct JsonObjectConverter<PublicRoomsChunk> {
- static void dumpTo(QJsonObject& jo, const PublicRoomsChunk& pod);
- static void fillFrom(const QJsonObject& jo, PublicRoomsChunk& pod);
+ static void 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("name"), pod.name);
+ addParam<>(jo, QStringLiteral("num_joined_members"),
+ pod.numJoinedMembers);
+ addParam<>(jo, QStringLiteral("room_id"), pod.roomId);
+ addParam<IfNotEmpty>(jo, QStringLiteral("topic"), pod.topic);
+ addParam<>(jo, QStringLiteral("world_readable"), pod.worldReadable);
+ addParam<>(jo, QStringLiteral("guest_can_join"), pod.guestCanJoin);
+ addParam<IfNotEmpty>(jo, QStringLiteral("avatar_url"), pod.avatarUrl);
+ }
+ static void fillFrom(const QJsonObject& jo, PublicRoomsChunk& pod)
+ {
+ fromJson(jo.value("aliases"_ls), pod.aliases);
+ fromJson(jo.value("canonical_alias"_ls), pod.canonicalAlias);
+ fromJson(jo.value("name"_ls), pod.name);
+ fromJson(jo.value("num_joined_members"_ls), pod.numJoinedMembers);
+ fromJson(jo.value("room_id"_ls), pod.roomId);
+ fromJson(jo.value("topic"_ls), pod.topic);
+ fromJson(jo.value("world_readable"_ls), pod.worldReadable);
+ fromJson(jo.value("guest_can_join"_ls), pod.guestCanJoin);
+ fromJson(jo.value("avatar_url"_ls), pod.avatarUrl);
+ }
};
+
/// A list of the rooms on the server.
struct PublicRoomsResponse {
/// A paginated chunk of public rooms.
@@ -70,8 +91,22 @@ struct PublicRoomsResponse {
template <>
struct JsonObjectConverter<PublicRoomsResponse> {
- static void dumpTo(QJsonObject& jo, const PublicRoomsResponse& pod);
- static void fillFrom(const QJsonObject& jo, PublicRoomsResponse& pod);
+ static void 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);
+ }
+ static void fillFrom(const QJsonObject& jo, PublicRoomsResponse& pod)
+ {
+ fromJson(jo.value("chunk"_ls), pod.chunk);
+ fromJson(jo.value("next_batch"_ls), pod.nextBatch);
+ fromJson(jo.value("prev_batch"_ls), pod.prevBatch);
+ fromJson(jo.value("total_room_count_estimate"_ls),
+ pod.totalRoomCountEstimate);
+ }
};
} // namespace Quotient