1#include "mtx/responses/device.hpp"
2
3#include <nlohmann/json.hpp>
4
5namespace mtx {
6namespace responses {
7
8void
9from_json(const nlohmann::json &obj, Device &res)
10{
11 res.device_id = obj.at(key: "device_id").get<std::string>();
12
13 // This is needed because synapse sometimes sends null instead -_-
14 if (obj.contains(key: "display_name") && obj["display_name"].is_string()) {
15 res.display_name = obj.value(key: "display_name", default_value: std::string{});
16 }
17
18 // This is needed because synapse sometimes sends null instead -_-
19 if (obj.contains(key: "last_seen_ip") && obj["last_seen_ip"].is_string()) {
20 res.last_seen_ip = obj.value(key: "last_seen_ip", default_value: std::string{});
21 }
22
23 // This is needed because synapse sometimes sends null instead -_-
24 if (obj.contains(key: "last_seen_ts") && obj["last_seen_ts"].is_number()) {
25 res.last_seen_ts = obj.value(key: "last_seen_ts", default_value: size_t{});
26 }
27}
28
29void
30from_json(const nlohmann::json &obj, QueryDevices &response)
31{
32 response.devices = obj.at(key: "devices").get<std::vector<Device>>();
33}
34}
35}
36