Skip to main content

ossify/ops/bucket/public_access_block/
delete_bucket_public_access_block.rs

1//! DeleteBucketPublicAccessBlock.
2//!
3//! Official document: <https://www.alibabacloud.com/help/en/oss/developer-reference/deletebucketpublicaccessblock>
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, Default, Serialize)]
17pub struct DeleteBucketPublicAccessBlockParams {
18    #[serde(rename = "publicAccessBlock")]
19    public_access_block: OnlyKeyField,
20}
21
22pub struct DeleteBucketPublicAccessBlock;
23
24impl Ops for DeleteBucketPublicAccessBlock {
25    type Response = EmptyResponseProcessor;
26    type Body = NoneBody;
27    type Query = DeleteBucketPublicAccessBlockParams;
28
29    fn prepare(self) -> Result<Prepared<DeleteBucketPublicAccessBlockParams>> {
30        Ok(Prepared {
31            method: Method::DELETE,
32            query: Some(DeleteBucketPublicAccessBlockParams::default()),
33            ..Default::default()
34        })
35    }
36}
37
38pub trait DeleteBucketPublicAccessBlockOps {
39    /// Delete the bucket-level Block Public Access configuration.
40    ///
41    /// Official document: <https://www.alibabacloud.com/help/en/oss/developer-reference/deletebucketpublicaccessblock>
42    fn delete_bucket_public_access_block(&self) -> impl Future<Output = Result<()>>;
43}
44
45impl DeleteBucketPublicAccessBlockOps for Client {
46    async fn delete_bucket_public_access_block(&self) -> Result<()> {
47        self.request(DeleteBucketPublicAccessBlock).await
48    }
49}
50
51#[cfg(test)]
52mod tests {
53    use super::*;
54
55    #[test]
56    fn params_serialize() {
57        assert_eq!(
58            crate::ser::to_string(&DeleteBucketPublicAccessBlockParams::default()).unwrap(),
59            "publicAccessBlock"
60        );
61    }
62
63    #[test]
64    fn method_is_delete() {
65        let p = DeleteBucketPublicAccessBlock.prepare().unwrap();
66        assert_eq!(p.method, Method::DELETE);
67    }
68}