1pub mod connect {
5 tonic::include_proto!("authly.connect");
6}
7
8pub mod mandate_submission {
10 tonic::include_proto!("authly.mandate_submission");
11}
12
13pub mod service {
15 tonic::include_proto!("authly.service");
16}
17
18pub fn proto_value_to_json(value: prost_types::Value) -> serde_json::Value {
20 use prost_types::value::Kind;
21 use serde_json::Value;
22
23 match value.kind {
24 Some(Kind::NullValue(_)) => Value::Null,
25 Some(Kind::NumberValue(n)) => serde_json::Number::from_f64(n)
26 .map(Value::Number)
27 .unwrap_or(Value::Null),
28 Some(Kind::StringValue(s)) => Value::String(s),
29 Some(Kind::BoolValue(b)) => Value::Bool(b),
30 Some(Kind::StructValue(s)) => Value::Object(proto_struct_to_json(s)),
31 Some(Kind::ListValue(l)) => {
32 Value::Array(l.values.into_iter().map(proto_value_to_json).collect())
33 }
34 None => serde_json::Value::Null,
35 }
36}
37
38pub fn proto_struct_to_json(
40 proto: prost_types::Struct,
41) -> serde_json::Map<String, serde_json::Value> {
42 let mut map = serde_json::Map::default();
43
44 for (key, value) in proto.fields {
45 map.insert(key, proto_value_to_json(value));
46 }
47
48 map
49}