use chrono::{serde::ts_seconds, DateTime, Utc};
use serde::Deserialize;
pub mod requests;
#[cfg(test)]
mod tests;
use crate::types::Season;
use super::LeaderboardUser;
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SeasonInfo {
number: Season,
#[serde(with = "ts_seconds")]
ends_at: DateTime<Utc>,
}
impl SeasonInfo {
pub fn number(&self) -> Season {
self.number
}
pub fn ends_at(&self) -> DateTime<Utc> {
self.ends_at
}
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EloLeaderboardInfo {
season: SeasonInfo,
users: Box<[LeaderboardUser]>,
}
impl EloLeaderboardInfo {
pub fn season(&self) -> &SeasonInfo {
&self.season
}
pub fn users(&self) -> &[LeaderboardUser] {
&self.users
}
}