rdap 0.2.0

A modern RDAP (Registration Data Access Protocol) client
Documentation
//! Nameserver model (RFC 7483 Section 5.2).

use super::*;
use serde::{Deserialize, Serialize};

/// DNS nameserver information (RFC 7483 Section 5.2).
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Nameserver {
    /// RDAP object class name — `"nameserver"` when present.
    #[serde(rename = "objectClassName", default)]
    pub object_class_name: Option<String>,

    /// RDAP conformance extensions advertised by the server.
    #[serde(rename = "rdapConformance", default)]
    pub conformance: Vec<String>,

    /// Server-level notices.
    #[serde(default)]
    pub notices: Vec<Notice>,

    /// Registry-unique handle for this nameserver.
    #[serde(default)]
    pub handle: Option<String>,

    /// LDH (ASCII-compatible) form of the nameserver hostname.
    #[serde(rename = "ldhName", default)]
    pub ldh_name: Option<String>,

    /// Internationalized (Unicode) form of the nameserver hostname.
    #[serde(rename = "unicodeName", default)]
    pub unicode_name: Option<String>,

    /// IPv4 and IPv6 glue addresses for this nameserver.
    #[serde(rename = "ipAddresses", default)]
    pub ip_addresses: Option<IpAddressSet>,

    /// Associated entities.
    #[serde(default)]
    pub entities: Vec<Entity>,

    /// Status values (e.g. `"active"`).
    #[serde(default)]
    pub status: Status,

    /// Remarks attached to this nameserver.
    #[serde(default)]
    pub remarks: Vec<Remark>,

    /// Links related to this nameserver.
    #[serde(default)]
    pub links: Vec<Link>,

    /// WHOIS server hostname (legacy, RFC 3912).
    #[serde(default)]
    pub port43: Option<String>,

    /// Lifecycle events.
    #[serde(default)]
    pub events: Vec<Event>,

    /// Language tag of the response (BCP 47).
    #[serde(default)]
    pub lang: Option<String>,
}

/// IPv4 and IPv6 address sets for a nameserver.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IpAddressSet {
    /// IPv4 addresses (e.g. `["192.0.2.1"]`).
    #[serde(default)]
    pub v4: Vec<String>,

    /// IPv6 addresses (e.g. `["2001:db8::1"]`).
    #[serde(default)]
    pub v6: Vec<String>,
}