1 | /****************************************************************************** |
2 | * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN |
3 | */ |
4 | |
5 | #pragma once |
6 | |
7 | #include <Quotient/csapi/definitions/event_filter.h> |
8 | #include <Quotient/csapi/definitions/room_event_filter.h> |
9 | |
10 | #include <Quotient/converters.h> |
11 | |
12 | namespace Quotient { |
13 | /// Filters to be applied to room data. |
14 | struct RoomFilter { |
15 | /// A list of room IDs to exclude. If this list is absent then no rooms are |
16 | /// excluded. A matching room will be excluded even if it is listed in the |
17 | /// `'rooms'` filter. This filter is applied before the filters in |
18 | /// `ephemeral`, `state`, `timeline` or `account_data` |
19 | QStringList notRooms{}; |
20 | |
21 | /// A list of room IDs to include. If this list is absent then all rooms are |
22 | /// included. This filter is applied before the filters in `ephemeral`, |
23 | /// `state`, `timeline` or `account_data` |
24 | QStringList rooms{}; |
25 | |
26 | /// The ephemeral events to include for rooms. These are the events that |
27 | /// appear in the `ephemeral` property in the `/sync` response. |
28 | RoomEventFilter ephemeral{}; |
29 | |
30 | /// Include rooms that the user has left in the sync, default false |
31 | Omittable<bool> includeLeave{}; |
32 | |
33 | /// The state events to include for rooms. |
34 | RoomEventFilter state{}; |
35 | |
36 | /// The message and state update events to include for rooms. |
37 | RoomEventFilter timeline{}; |
38 | |
39 | /// The per user account data to include for rooms. |
40 | RoomEventFilter accountData{}; |
41 | }; |
42 | |
43 | template <> |
44 | struct JsonObjectConverter<RoomFilter> { |
45 | static void dumpTo(QJsonObject& jo, const RoomFilter& pod) |
46 | { |
47 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("not_rooms" ), value: pod.notRooms); |
48 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("rooms" ), value: pod.rooms); |
49 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("ephemeral" ), value: pod.ephemeral); |
50 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("include_leave" ), |
51 | value: pod.includeLeave); |
52 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("state" ), value: pod.state); |
53 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("timeline" ), value: pod.timeline); |
54 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("account_data" ), |
55 | value: pod.accountData); |
56 | } |
57 | static void fillFrom(const QJsonObject& jo, RoomFilter& pod) |
58 | { |
59 | fillFromJson(jv: jo.value(key: "not_rooms"_ls ), pod&: pod.notRooms); |
60 | fillFromJson(jv: jo.value(key: "rooms"_ls ), pod&: pod.rooms); |
61 | fillFromJson(jv: jo.value(key: "ephemeral"_ls ), pod&: pod.ephemeral); |
62 | fillFromJson(jv: jo.value(key: "include_leave"_ls ), pod&: pod.includeLeave); |
63 | fillFromJson(jv: jo.value(key: "state"_ls ), pod&: pod.state); |
64 | fillFromJson(jv: jo.value(key: "timeline"_ls ), pod&: pod.timeline); |
65 | fillFromJson(jv: jo.value(key: "account_data"_ls ), pod&: pod.accountData); |
66 | } |
67 | }; |
68 | |
69 | struct Filter { |
70 | /// List of event fields to include. If this list is absent then all fields |
71 | /// are included. The entries are [dot-separated paths for each |
72 | /// property](/appendices#dot-separated-property-paths) to include. So |
73 | /// ['content.body'] will include the 'body' field of the 'content' object. |
74 | /// A server may include more fields than were requested. |
75 | QStringList eventFields{}; |
76 | |
77 | /// The format to use for events. 'client' will return the events in a |
78 | /// format suitable for clients. 'federation' will return the raw event as |
79 | /// received over federation. The default is 'client'. |
80 | QString eventFormat{}; |
81 | |
82 | /// The presence updates to include. |
83 | EventFilter presence{}; |
84 | |
85 | /// The user account data that isn't associated with rooms to include. |
86 | EventFilter accountData{}; |
87 | |
88 | /// Filters to be applied to room data. |
89 | RoomFilter room{}; |
90 | }; |
91 | |
92 | template <> |
93 | struct JsonObjectConverter<Filter> { |
94 | static void dumpTo(QJsonObject& jo, const Filter& pod) |
95 | { |
96 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("event_fields" ), |
97 | value: pod.eventFields); |
98 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("event_format" ), |
99 | value: pod.eventFormat); |
100 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("presence" ), value: pod.presence); |
101 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("account_data" ), |
102 | value: pod.accountData); |
103 | addParam<IfNotEmpty>(container&: jo, QStringLiteral("room" ), value: pod.room); |
104 | } |
105 | static void fillFrom(const QJsonObject& jo, Filter& pod) |
106 | { |
107 | fillFromJson(jv: jo.value(key: "event_fields"_ls ), pod&: pod.eventFields); |
108 | fillFromJson(jv: jo.value(key: "event_format"_ls ), pod&: pod.eventFormat); |
109 | fillFromJson(jv: jo.value(key: "presence"_ls ), pod&: pod.presence); |
110 | fillFromJson(jv: jo.value(key: "account_data"_ls ), pod&: pod.accountData); |
111 | fillFromJson(jv: jo.value(key: "room"_ls ), pod&: pod.room); |
112 | } |
113 | }; |
114 | |
115 | } // namespace Quotient |
116 | |