1#include "mtx/responses/login.hpp"
2
3#include <nlohmann/json.hpp>
4
5namespace mtx {
6namespace responses {
7
8void
9from_json(const nlohmann::json &obj, Login &response)
10{
11 using namespace mtx::identifiers;
12 response.user_id = obj.at(key: "user_id").get<User>();
13
14 response.access_token = obj.at(key: "access_token").get<std::string>();
15
16 if (obj.count(key: "device_id") != 0)
17 response.device_id = obj.at(key: "device_id").get<std::string>();
18
19 if (obj.count(key: "well_known") != 0 && obj.at(key: "well_known").is_object())
20 response.well_known = obj.at(key: "well_known").get<WellKnown>();
21}
22
23void
24from_json(const nlohmann::json &obj, IdentityProvider &response)
25{
26 response.brand = obj.value(key: "brand", default_value: "");
27 response.icon = obj.value(key: "icon", default_value: "");
28 response.id = obj.at(key: "id").get<std::string>();
29 response.name = obj.at(key: "name").get<std::string>();
30}
31
32void
33from_json(const nlohmann::json &obj, LoginFlow &response)
34{
35 response.type = obj.at(key: "type").get<std::string>();
36 response.identity_providers = obj.value(key: "identity_providers", default_value: std::vector<IdentityProvider>{});
37}
38void
39from_json(const nlohmann::json &obj, LoginFlows &response)
40{
41 response.flows = obj.at(key: "flows").get<std::vector<LoginFlow>>();
42}
43}
44}
45