scaleway-rs 0.2.8

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

#[derive(Debug, Clone, Copy)]
pub enum MarketplaceImageOrderBy {
    NameAsc,
    NameDesc,
    CreatedAtAsc,
    CreatedAtDesc,
    UpdatedAtAsc,
    UpdatedAtDesc,
}

impl std::fmt::Display for MarketplaceImageOrderBy {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            MarketplaceImageOrderBy::NameAsc => write!(f, "name_asc"),
            MarketplaceImageOrderBy::NameDesc => write!(f, "name_desc"),
            MarketplaceImageOrderBy::CreatedAtAsc => write!(f, "created_at_asc"),
            MarketplaceImageOrderBy::CreatedAtDesc => write!(f, "created_at_desc"),
            MarketplaceImageOrderBy::UpdatedAtAsc => write!(f, "updated_at_asc"),
            MarketplaceImageOrderBy::UpdatedAtDesc => write!(f, "updated_at_desc"),
        }
    }
}

#[derive(Deserialize, Debug)]
pub struct ScalewayMarketplaceImageRoot {
    pub images: Vec<ScalewayMarketplaceImage>,
    pub total_count: u64,
}

#[derive(Deserialize, Debug)]
pub struct ScalewayMarketplaceImage {
    pub id: String,
    pub name: String,
    pub description: String,
    pub logo: String,
    pub categories: Vec<String>,
    #[serde(with = "time::serde::rfc3339")]
    pub created_at: time::OffsetDateTime,
    #[serde(with = "time::serde::rfc3339::option")]
    pub updated_at: Option<time::OffsetDateTime>,
    #[serde(with = "time::serde::rfc3339::option")]
    pub valid_until: Option<time::OffsetDateTime>,
    pub label: String,
}