lichess_api/model/external_engine/
acquire_analysis.rs1use 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}