use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ZoneProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub zone_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub number_of_record_sets: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_number_of_record_sets: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_number_of_records_per_record_set: Option<i64>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub name_servers: Vec<String>,
}
impl ZoneProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
zone_type: Some("test-zone_type".into()),
number_of_record_sets: Some(100),
max_number_of_record_sets: Some(100),
max_number_of_records_per_record_set: Some(100),
name_servers: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Zone {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<ZoneProperties>,
}
impl Zone {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-zone".into()),
r#type: Some("test-type".into()),
location: Some("test-location".into()),
tags: Default::default(),
etag: Some("test-etag".into()),
properties: Some(ZoneProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ZoneListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<Zone>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl ZoneListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ZoneCreateRequest {
pub location: String,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<ZoneProperties>,
}
impl ZoneCreateRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
location: "test-location".into(),
tags: Default::default(),
properties: Some(ZoneProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ARecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub ipv4_address: Option<String>,
}
impl ARecord {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
ipv4_address: Some("test-ipv4_address".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AaaaRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub ipv6_address: Option<String>,
}
impl AaaaRecord {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
ipv6_address: Some("test-ipv6_address".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CnameRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub cname: Option<String>,
}
impl CnameRecord {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
cname: Some("test-cname".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MxRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub preference: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exchange: Option<String>,
}
impl MxRecord {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
preference: Some(100),
exchange: Some("test-exchange".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TxtRecord {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<String>,
}
impl TxtRecord {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self { value: vec![] }
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NsRecord {
#[serde(skip_serializing_if = "Option::is_none")]
pub nsdname: Option<String>,
}
impl NsRecord {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
nsdname: Some("test-nsdname".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RecordSetProperties {
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub metadata: HashMap<String, String>,
#[serde(rename = "TTL")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ttl: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fqdn: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub provisioning_state: Option<String>,
#[serde(rename = "ARecords")]
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub a_records: Vec<ARecord>,
#[serde(rename = "AAAARecords")]
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub aaaa_records: Vec<AaaaRecord>,
#[serde(rename = "CNAMERecord")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cname_record: Option<CnameRecord>,
#[serde(rename = "MXRecords")]
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub mx_records: Vec<MxRecord>,
#[serde(rename = "TXTRecords")]
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub txt_records: Vec<TxtRecord>,
#[serde(rename = "NSRecords")]
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub ns_records: Vec<NsRecord>,
}
impl RecordSetProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
metadata: Default::default(),
ttl: Some(100),
fqdn: Some("test-fqdn".into()),
provisioning_state: Some("test-provisioning_state".into()),
a_records: vec![],
aaaa_records: vec![],
cname_record: Some(CnameRecord::fixture()),
mx_records: vec![],
txt_records: vec![],
ns_records: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RecordSet {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<RecordSetProperties>,
}
impl RecordSet {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-record_set".into()),
r#type: Some("test-type".into()),
etag: Some("test-etag".into()),
properties: Some(RecordSetProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RecordSetListResult {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<RecordSet>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl RecordSetListResult {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RecordSetCreateRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<RecordSetProperties>,
}
impl RecordSetCreateRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
etag: Some("test-etag".into()),
properties: Some(RecordSetProperties::fixture()),
}
}
}