Skip to main content

wekan_cli/client/boards/
copy.rs

1use 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}