scaleway-rs 0.2.8

A pure Rust scaleway API binding.
Documentation
use serde::Deserialize;
use time::OffsetDateTime;

#[derive(Deserialize, Debug)]
pub struct ScalewayDnsZone {
    pub domain: String,
    pub subdomain: String,
    pub ns: Vec<String>,
    pub ns_default: Vec<String>,
    pub message: Option<String>,
    #[serde(with = "time::serde::rfc3339::option")]
    pub updated_at: Option<OffsetDateTime>,
    pub project_id: String,
    pub status: DnsZoneStatus,
    pub linked_products: Vec<String>,
    pub is_default: Option<bool>,
}

#[derive(Debug, Clone, Copy)]
pub enum DnsZoneOrderBy {
    DomainAsc,
    DomainDesc,
}

impl std::fmt::Display for DnsZoneOrderBy {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            DnsZoneOrderBy::DomainAsc => write!(f, "domain_asc"),
            DnsZoneOrderBy::DomainDesc => write!(f, "domain_desc"),
        }
    }
}

#[derive(Deserialize, Debug)]
#[serde(rename_all = "snake_case")]
pub enum DnsZoneStatus {
    Unknown,
    Active,
    Pending,
    Error,
    Locked,
}

#[derive(Deserialize, Debug)]
pub(crate) struct ScalewayDnsZonesRoot {
    pub dns_zones: Vec<ScalewayDnsZone>,
}