#[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"),
}
}
}