wekan_cli/client/boards/
copy.rs1use super::{ClientError, WekanClient, require_non_empty};
2use crate::client::transport::decode_success;
3use reqwest::header::ACCEPT;
4use secrecy::{ExposeSecret, SecretString};
5use serde::Serialize;
6
7#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize)]
8pub struct CopyBoardRequest {
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub title: Option<String>,
11}
12impl WekanClient {
13 pub async fn copy_board(
14 &self,
15 board_id: &str,
16 request: &CopyBoardRequest,
17 token: &SecretString,
18 ) -> Result<String, ClientError> {
19 let body = self
20 .execute_success_request(
21 self.http
22 .post(self.board_endpoint(board_id, Some("copy"))?)
23 .header(ACCEPT, "application/json")
24 .bearer_auth(token.expose_secret())
25 .json(request),
26 )
27 .await?;
28 let id: String = decode_success(&body, "board copy", true)?;
29 require_non_empty(&id, "board copy", "board id")?;
30 Ok(id)
31 }
32}