drogue_client/discovery/v1/
data.rs1use crate::serde::is_default;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
5pub struct CoapEndpoint {
6 pub url: String,
7}
8
9#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
10pub struct HttpEndpoint {
11 pub url: String,
12}
13
14#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
15pub struct MqttEndpoint {
16 pub host: String,
17 pub port: u16,
18}
19
20#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
21pub struct RegistryEndpoint {
22 pub url: String,
23}
24
25#[derive(Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)]
26pub struct Endpoints {
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub api: Option<String>,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub console: Option<String>,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub coap: Option<CoapEndpoint>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub http: Option<HttpEndpoint>,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub mqtt: Option<MqttEndpoint>,
37 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub mqtt_ws: Option<HttpEndpoint>,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub mqtt_ws_browser: Option<HttpEndpoint>,
41 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub mqtt_integration: Option<MqttEndpoint>,
43 #[serde(default, skip_serializing_if = "Option::is_none")]
44 pub mqtt_integration_ws: Option<HttpEndpoint>,
45 #[serde(default, skip_serializing_if = "Option::is_none")]
46 pub mqtt_integration_ws_browser: Option<HttpEndpoint>,
47 #[serde(default, skip_serializing_if = "Option::is_none")]
48 pub websocket_integration: Option<HttpEndpoint>,
49 #[serde(default, skip_serializing_if = "Option::is_none")]
50 pub sso: Option<String>,
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub issuer_url: Option<String>,
53 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub redirect_url: Option<String>,
55 #[serde(default, skip_serializing_if = "Option::is_none")]
56 pub registry: Option<RegistryEndpoint>,
57 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub command_url: Option<String>,
59 #[serde(default, skip_serializing_if = "is_default")]
60 pub local_certs: bool,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub kafka_bootstrap_servers: Option<String>,
63 #[serde(default, skip_serializing_if = "Vec::is_empty")]
64 pub demos: Vec<(String, String)>,
65}
66
67impl Endpoints {
68 pub fn publicize(&self) -> Endpoints {
70 Endpoints {
71 coap: None,
72 http: None,
73 mqtt: None,
74 mqtt_ws: None,
75 mqtt_ws_browser: None,
76 mqtt_integration: None,
77 mqtt_integration_ws: None,
78 mqtt_integration_ws_browser: None,
79 websocket_integration: None,
80 sso: self.sso.clone(),
81 api: self.api.clone(),
82 console: self.console.clone(),
83 issuer_url: self.issuer_url.clone(),
84 redirect_url: None,
85 registry: self.registry.clone(),
86 command_url: None,
87 kafka_bootstrap_servers: None,
88 local_certs: false,
89 demos: vec![],
90 }
91 }
92}
93
94#[derive(Clone, Debug, Serialize, Deserialize)]
98pub struct DrogueVersion {
99 pub version: String,
100}