lichess_api/model/external_engine/
acquire_analysis.rs

1use crate::model::{Body, Domain, Request};
2use serde::{Deserialize, Serialize};
3
4#[derive(Default, Clone, Debug, Serialize)]
5#[serde(rename_all = "camelCase")]
6pub struct PostQuery;
7
8pub type PostRequest = Request<PostQuery, AcquireAnalysis>;
9
10impl PostRequest {
11    pub fn new(acquire_analysis: AcquireAnalysis) -> Self {
12        Self {
13            domain: Domain::Engine,
14            method: http::Method::POST,
15            path: format!("/api/external-engine/work"),
16            query: Default::default(),
17            body: Body::Json(acquire_analysis),
18        }
19    }
20}
21
22#[derive(Clone, Debug, Serialize)]
23#[serde(rename_all = "camelCase")]
24pub struct AcquireAnalysis {
25    pub provider_secret: String,
26}
27
28#[derive(Clone, Debug, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct AcquireAnalysisResponse {
31    pub id: String,
32    pub work: ExternalEngineWork,
33    pub engine: Engine,
34}
35
36#[derive(Clone, Debug, Deserialize)]
37#[serde(rename_all = "camelCase")]
38pub struct ExternalEngineWork {
39    pub session_id: String,
40    pub threads: u32,
41    pub hash: u32,
42    pub infinite: bool,
43    pub multi_pv: u8,
44    pub variant: String,
45    pub initial_fen: String,
46    pub moves: Vec<String>,
47}
48
49#[derive(Clone, Debug, Deserialize)]
50#[serde(rename_all = "camelCase")]
51pub struct Engine {
52    pub id: String,
53    pub name: String,
54    pub client_secret: String,
55    pub user_id: String,
56    pub max_threads: u32,
57    pub max_hash: u32,
58    pub default_depth: u8,
59    pub variants: Vec<String>,
60    pub provider_data: Option<String>,
61}