1use serde::{Deserialize, Serialize};
6
7use crate::common::{RdapEntity, RdapEvent, RdapLink, RdapRemark, RdapStatus, ResponseMeta};
8
9#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11pub struct NameserverIpAddresses {
12 #[serde(default, skip_serializing_if = "Vec::is_empty")]
13 pub v4: Vec<String>,
14 #[serde(default, skip_serializing_if = "Vec::is_empty")]
15 pub v6: Vec<String>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(rename_all = "camelCase")]
21pub struct NameserverResponse {
22 pub query: String,
24
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub handle: Option<String>,
28
29 #[serde(skip_serializing_if = "Option::is_none")]
31 pub ldh_name: Option<String>,
32
33 #[serde(skip_serializing_if = "Option::is_none")]
35 pub unicode_name: Option<String>,
36
37 #[serde(default)]
39 pub ip_addresses: NameserverIpAddresses,
40
41 #[serde(default, skip_serializing_if = "Vec::is_empty")]
42 pub status: Vec<RdapStatus>,
43
44 #[serde(default, skip_serializing_if = "Vec::is_empty")]
45 pub entities: Vec<RdapEntity>,
46
47 #[serde(default, skip_serializing_if = "Vec::is_empty")]
48 pub events: Vec<RdapEvent>,
49
50 #[serde(default, skip_serializing_if = "Vec::is_empty")]
51 pub links: Vec<RdapLink>,
52
53 #[serde(default, skip_serializing_if = "Vec::is_empty")]
54 pub remarks: Vec<RdapRemark>,
55
56 pub meta: ResponseMeta,
57}