diff --git a/lib/src/api/external_engine.rs b/lib/src/api/external_engine.rs index 017889b..cd0677a 100644 --- a/lib/src/api/external_engine.rs +++ b/lib/src/api/external_engine.rs @@ -53,4 +53,11 @@ impl LichessApi { // The response is a stream of 0 or 1 items, so we can just take the first item Ok((stream.next().await).transpose()?) } + + pub async fn submit_analysis( + &self, + request: impl Into, + ) -> Result<()> { + self.get_empty(request.into()).await + } } diff --git a/lib/src/model/external_engine/mod.rs b/lib/src/model/external_engine/mod.rs index 7080c26..d8174a0 100644 --- a/lib/src/model/external_engine/mod.rs +++ b/lib/src/model/external_engine/mod.rs @@ -4,6 +4,7 @@ pub mod create; pub mod delete; pub mod id; pub mod list; +pub mod submit_analysis; pub mod update; use serde::{Deserialize, Serialize}; diff --git a/lib/src/model/external_engine/submit_analysis.rs b/lib/src/model/external_engine/submit_analysis.rs new file mode 100644 index 0000000..42668b9 --- /dev/null +++ b/lib/src/model/external_engine/submit_analysis.rs @@ -0,0 +1,20 @@ +use crate::model::{Body, Domain, Request}; +use serde::Serialize; + +#[derive(Default, Clone, Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct PostQuery; + +pub type PostRequest = Request; + +impl PostRequest { + pub fn new(id: &str, analysis: String) -> Self { + Self { + domain: Domain::Engine, + method: http::Method::POST, + path: format!("/api/external-engine/work/{id}"), + query: Default::default(), + body: Body::PlainText(analysis), + } + } +}