lichess-api 1.0.0

A client library for the Lichess API
Documentation
use serde::{Deserialize, Serialize};

#[serde_with::skip_serializing_none]
#[derive(Default, Clone, Debug, Serialize)]
pub struct GetQuery {
    pub angle: Option<String>,
    pub difficulty: Option<Difficulty>,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Difficulty {
    Easiest,
    Easier,
    Normal,
    Harder,
    Hardest,
}

pub type GetRequest = crate::model::Request<GetQuery>;

impl GetRequest {
    pub fn new(angle: Option<String>, difficulty: Option<Difficulty>) -> Self {
        let query = GetQuery { angle, difficulty };
        Self::get("/api/puzzle/next", query, None)
    }
}

impl Default for GetRequest {
    fn default() -> Self {
        Self::new(None, None)
    }
}

pub type Puzzle = super::PuzzleAndGame;