lichess_api/model/board/
chat.rs

1use crate::model::{Body, Request, Room};
2use serde::{Deserialize, Serialize};
3
4#[derive(Default, Clone, Debug, Serialize)]
5pub struct GetQuery;
6
7pub type GetRequest = Request<GetQuery>;
8
9impl GetRequest {
10    pub fn new(game_id: &str) -> Self {
11        Self::get(format!("/api/board/game/{game_id}/chat"), None, None)
12    }
13}
14
15impl<S: AsRef<str>> From<S> for GetRequest {
16    fn from(s: S) -> Self {
17        Self::new(s.as_ref())
18    }
19}
20
21#[derive(Default, Clone, Debug, Serialize)]
22pub struct PostQuery;
23
24#[derive(Clone, Debug, Serialize)]
25pub struct ChatMessage {
26    pub room: Room,
27    pub text: String,
28}
29
30pub type PostRequest = Request<PostQuery, ChatMessage>;
31
32impl PostRequest {
33    pub fn new(game_id: &str, room: Room, message: &str) -> Self {
34        let message = ChatMessage {
35            room,
36            text: message.to_string(),
37        };
38        let path = format!("/api/board/game/{game_id}/chat");
39        Self::post(path, None, Body::Form(message), None)
40    }
41}
42
43#[derive(Clone, Debug, Deserialize, Serialize)]
44pub struct ChatLine {
45    pub text: String,
46    pub user: String,
47}