algorithm-problem-client 0.4.0

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

pub struct AtCoderSubmissionListResponse {
    pub max_page: u32,
    pub submissions: Vec<AtCoderSubmission>,
}

#[derive(Clone, Debug, PartialEq, Eq)]
pub struct AtCoderContest {
    pub id: String,
    pub start_epoch_second: u64,
    pub duration_second: u64,
    pub title: String,
    pub rate_change: String,
}

#[derive(Clone, Debug, PartialEq, Eq)]
pub struct AtCoderSubmission {
    pub id: u64,
    pub epoch_second: u64,
    pub problem_id: String,
    pub contest_id: String,
    pub user_id: String,
    pub language: String,
    pub point: u64,
    pub length: u64,
    pub result: String,
    pub execution_time: Option<u64>,
}

#[derive(Clone, Debug, PartialEq, Eq)]
pub struct AtCoderProblem {
    pub id: String,
    pub title: String,
    pub position: String,
    pub contest_id: String,
}

impl Problem for AtCoderProblem {
    fn url(&self) -> String {
        format!(
            "https://atcoder.jp/contests/{}/tasks/{}",
            self.contest_id, self.id
        )
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test_url() {
        let problem = AtCoderProblem {
            id: "arc102_c".to_string(),
            title: "".to_string(),
            position: "".to_string(),
            contest_id: "arc102".to_string(),
        };
        assert_eq!(
            "https://atcoder.jp/contests/arc102/tasks/arc102_c".to_string(),
            problem.url()
        );
    }
}