lichess_api/model/challenges/
decline.rs

1use crate::model::{Body, Request};
2use serde::Serialize;
3
4#[derive(Default, Clone, Debug, Serialize)]
5#[serde(rename_all = "camelCase")]
6pub struct PostQuery;
7
8#[derive(Clone, Debug, PartialEq, Eq, Serialize)]
9#[serde(rename_all = "camelCase")]
10pub enum Reason {
11    Generic,
12    Later,
13    TooFast,
14    TooSlow,
15    TimeControl,
16    Rated,
17    Casual,
18    Standard,
19    Variant,
20    NoBot,
21    OnlyBot,
22}
23
24#[derive(Clone, Debug, Serialize)]
25pub struct DeclineReason {
26    pub reason: Reason,
27}
28
29pub type PostRequest = Request<PostQuery, DeclineReason>;
30
31impl PostRequest {
32    pub fn new(challenge_id: String, reason: Reason) -> Self {
33        let path = format!("/api/challenge/{challenge_id}/decline");
34        Self::post(path, None, Body::Form(DeclineReason { reason }), None)
35    }
36}