lichess_api/model/challenges/
cancel.rs

1use crate::model::Request;
2use serde::Serialize;
3
4#[derive(Default, Clone, Debug, Serialize)]
5#[serde(rename_all = "camelCase")]
6pub struct PostQuery {
7    opponent_token: String,
8}
9
10pub type PostRequest = Request<PostQuery>;
11
12impl PostRequest {
13    pub fn new(challenge_id: String, opponent_token: Option<String>) -> Self {
14        let path = format!("/api/challenge/{challenge_id}/cancel");
15        let query = opponent_token.map(|t| PostQuery { opponent_token: t });
16        Self::post(path, query, None, None)
17    }
18}
19
20impl<S: Into<String>> From<S> for PostRequest {
21    fn from(challenge_id: S) -> Self {
22        Self::new(challenge_id.into(), None)
23    }
24}