chesscom-openapi 0.1.1

OpenAPI-generated API client bindings for Chess.com
Documentation
/*
 * Chess
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0
 * 
 * Generated by: https://openapi-generator.tech
 */




#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Profile {
    #[serde(rename = "@id")]
    pub id: String,
    #[serde(rename = "url")]
    pub url: String,
    #[serde(rename = "username")]
    pub username: String,
    #[serde(rename = "player_id")]
    pub player_id: i32,
    #[serde(rename = "title", skip_serializing_if = "Option::is_none")]
    pub title: Option<crate::models::Title>,
    #[serde(rename = "status")]
    pub status: Status,
    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "avatar", skip_serializing_if = "Option::is_none")]
    pub avatar: Option<String>,
    #[serde(rename = "location", skip_serializing_if = "Option::is_none")]
    pub location: Option<String>,
    #[serde(rename = "country")]
    pub country: String,
    #[serde(rename = "joined")]
    #[serde(with = "chrono::serde::ts_seconds")]
	pub joined: chrono::DateTime<chrono::Utc>,
    #[serde(rename = "last_online")]
    #[serde(with = "chrono::serde::ts_seconds")]
	pub last_online: chrono::DateTime<chrono::Utc>,
    #[serde(rename = "followers")]
    pub followers: i32,
    #[serde(rename = "is_streamer")]
    pub is_streamer: bool,
    #[serde(rename = "twitch_url", skip_serializing_if = "Option::is_none")]
    pub twitch_url: Option<String>,
    #[serde(rename = "fide", skip_serializing_if = "Option::is_none")]
    pub fide: Option<i32>,
}

impl Profile {
    pub fn new(id: String, url: String, username: String, player_id: i32, status: Status, country: String, joined: chrono::DateTime<chrono::Utc>, last_online: chrono::DateTime<chrono::Utc>, followers: i32, is_streamer: bool) -> Profile {
        Profile {
            id,
            url,
            username,
            player_id,
            title: None,
            status,
            name: None,
            avatar: None,
            location: None,
            country,
            joined,
            last_online,
            followers,
            is_streamer,
            twitch_url: None,
            fide: None,
        }
    }
}

/// 
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
    #[serde(rename = "closed")]
    Closed,
    #[serde(rename = "closed:fair_play_violations")]
    ClosedfairPlayViolations,
    #[serde(rename = "basic")]
    Basic,
    #[serde(rename = "premium")]
    Premium,
    #[serde(rename = "mod")]
    _Mod,
    #[serde(rename = "staff")]
    Staff,
}

impl std::fmt::Display for Status {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Status::Closed => write!(f, "closed"),
            Status::ClosedfairPlayViolations => write!(f, "closed:fair_play_violations"),
            Status::Basic => write!(f, "basic"),
            Status::Premium => write!(f, "premium"),
            Status::_Mod => write!(f, "mod"),
            Status::Staff => write!(f, "staff"),

        }
    }
}