Skip to main content

ossify/ops/bucket/policy/
delete_bucket_policy.rs

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