Skip to main content

ossify/ops/bucket/redundancy_transition/
delete_bucket_data_redundancy_transition.rs

1//! DeleteBucketDataRedundancyTransition.
2//!
3//! Official document: <https://www.alibabacloud.com/help/en/oss/developer-reference/deletebucketdataredundancytransition>
4
5use std::future::Future;
6
7use http::Method;
8use serde::Serialize;
9
10use crate::body::NoneBody;
11use crate::error::Result;
12use crate::response::EmptyResponseProcessor;
13use crate::ser::OnlyKeyField;
14use crate::{Client, Ops, Prepared, Request};
15
16#[derive(Debug, Clone, Serialize)]
17pub struct DeleteBucketDataRedundancyTransitionParams {
18    #[serde(rename = "redundancyTransition")]
19    redundancy_transition: OnlyKeyField,
20    #[serde(rename = "x-oss-redundancy-transition-taskid")]
21    pub task_id: String,
22}
23
24impl DeleteBucketDataRedundancyTransitionParams {
25    pub fn new(task_id: impl Into<String>) -> Self {
26        Self {
27            redundancy_transition: OnlyKeyField,
28            task_id: task_id.into(),
29        }
30    }
31}
32
33pub struct DeleteBucketDataRedundancyTransition {
34    pub task_id: String,
35}
36
37impl Ops for DeleteBucketDataRedundancyTransition {
38    type Response = EmptyResponseProcessor;
39    type Body = NoneBody;
40    type Query = DeleteBucketDataRedundancyTransitionParams;
41
42    fn prepare(self) -> Result<Prepared<DeleteBucketDataRedundancyTransitionParams>> {
43        Ok(Prepared {
44            method: Method::DELETE,
45            query: Some(DeleteBucketDataRedundancyTransitionParams::new(self.task_id)),
46            ..Default::default()
47        })
48    }
49}
50
51pub trait DeleteBucketDataRedundancyTransitionOps {
52    /// Delete a redundancy type conversion task. Tasks in Processing state
53    /// cannot be deleted.
54    ///
55    /// Official document: <https://www.alibabacloud.com/help/en/oss/developer-reference/deletebucketdataredundancytransition>
56    fn delete_bucket_data_redundancy_transition(
57        &self,
58        task_id: impl Into<String>,
59    ) -> impl Future<Output = Result<()>>;
60}
61
62impl DeleteBucketDataRedundancyTransitionOps for Client {
63    async fn delete_bucket_data_redundancy_transition(&self, task_id: impl Into<String>) -> Result<()> {
64        self.request(DeleteBucketDataRedundancyTransition {
65            task_id: task_id.into(),
66        })
67        .await
68    }
69}
70
71#[cfg(test)]
72mod tests {
73    use super::*;
74
75    #[test]
76    fn params_serialize() {
77        let q = crate::ser::to_string(&DeleteBucketDataRedundancyTransitionParams::new("task-1")).unwrap();
78        assert_eq!(q, "redundancyTransition&x-oss-redundancy-transition-taskid=task-1");
79    }
80}