algorithm-problem-client 0.6.0

HTTP Client for algorithm problems
Documentation
use crate::util::Problem;
use serde::Deserialize;

#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Deserialize)]
pub struct AojProblem {
    id: String,
    name: String,

    #[serde(rename = "solvedUser")]
    solved_user: u32,
}

#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Deserialize)]
pub struct AojUser {
    pub id: String,
    pub name: String,
    pub solved: u32,
}

#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Deserialize)]
pub struct AojUserRanking {
    #[serde(rename = "outOf")]
    pub total_user_count: u32,
    pub users: Vec<AojUser>,
}

#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Deserialize)]
pub struct AojUserInfo {
    pub id: String,
    pub name: String,
    pub status: AojUserStatus,
}

#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Deserialize)]
pub struct AojUserStatus {
    pub solved: u32,
}

#[derive(Debug, PartialEq, PartialOrd, Ord, Eq, Deserialize)]
pub struct AojSolution {
    #[serde(rename = "judgeId")]
    judge_id: u64,

    #[serde(rename = "userId")]
    user_id: String,

    #[serde(rename = "problemId")]
    problem_id: String,

    language: String,
    version: String,

    #[serde(rename = "submissionDate")]
    submission_date: u64,

    #[serde(rename = "judgeDate")]
    judge_date: u64,
}

impl Problem for AojProblem {
    fn url(&self) -> String {
        format!("https://onlinejudge.u-aizu.ac.jp/problems/{}", self.id)
    }
}