1 | #include "mtx/responses/capabilities.hpp" |
2 | |
3 | #include <nlohmann/json.hpp> |
4 | |
5 | namespace mtx::responses::capabilities { |
6 | void |
7 | from_json(const nlohmann::json &obj, RoomVersionStability &stab) |
8 | { |
9 | if (obj == "stable" ) |
10 | stab = RoomVersionStability::Stable; |
11 | else |
12 | stab = RoomVersionStability::Unstable; |
13 | } |
14 | |
15 | void |
16 | from_json(const nlohmann::json &obj, RoomVersionsCapability &cap) |
17 | { |
18 | cap.available = obj.value(key: "available" , |
19 | default_value: std::map<std::string, RoomVersionStability>{ |
20 | {"1" , RoomVersionStability::Stable}, |
21 | }); |
22 | cap.default_ = obj.value(key: "default" , default_value: "1" ); |
23 | } |
24 | |
25 | void |
26 | from_json(const nlohmann::json &obj, Enabled &cap) |
27 | { |
28 | cap.enabled = obj.value(key: "enabled" , default_value: true); |
29 | } |
30 | |
31 | void |
32 | from_json(const nlohmann::json &obj, Capabilities &caps) |
33 | { |
34 | if (obj.contains(key: "capabilities" ) && obj.at(key: "capabilities" ).is_object()) { |
35 | const auto &j = obj.at(key: "capabilities" ); |
36 | |
37 | caps.room_versions = j.value(key: "m.room_versions" , default_value: RoomVersionsCapability{}); |
38 | caps.change_password = j.value(key: "m.change_password" , default_value: Enabled{}); |
39 | caps.set_displayname = j.value(key: "m.set_displayname" , default_value: Enabled{}); |
40 | caps.set_avatar_url = j.value(key: "m.set_avatar_url" , default_value: Enabled{}); |
41 | caps.change_3pid = j.value(key: "m.3pid_changes" , default_value: Enabled{}); |
42 | } |
43 | } |
44 | } |
45 | |