s3/bucket/
delete.rs

1use crate::bucket::Bucket;
2use crate::command::Command;
3use crate::error::S3Error;
4use crate::request::RequestImpl;
5use crate::request::{Request, ResponseData};
6
7impl Bucket {
8    /// Delete existing `Bucket`
9    ///
10    /// # Example
11    /// ```rust,no_run
12    /// use s3::Bucket;
13    /// use s3::creds::Credentials;
14    /// use anyhow::Result;
15    ///
16    /// # #[tokio::main]
17    /// # async fn main() -> Result<()> {
18    /// let bucket_name = "rust-s3-test";
19    /// let region = "us-east-1".parse().unwrap();
20    /// let credentials = Credentials::default().unwrap();
21    /// let bucket = Bucket::new(bucket_name, region, credentials).unwrap();
22    ///
23    /// bucket.delete().await.unwrap();
24    ///
25    /// # Ok(())
26    /// # }
27    /// ```
28    pub async fn delete(&self) -> Result<u16, S3Error> {
29        let command = Command::DeleteBucket;
30        let request = RequestImpl::new(self, "", command)?;
31        let response_data = request.response_data(false).await?;
32        Ok(response_data.status_code())
33    }
34
35    /// Delete file from an S3 path.
36    ///
37    /// # Example:
38    ///
39    /// ```no_run
40    /// use s3::bucket::Bucket;
41    /// use s3::creds::Credentials;
42    /// use anyhow::Result;
43    ///
44    /// # #[tokio::main]
45    /// # async fn main() -> Result<()> {
46    ///
47    /// let bucket_name = "rust-s3-test";
48    /// let region = "us-east-1".parse()?;
49    /// let credentials = Credentials::default()?;
50    /// let bucket = Bucket::new(bucket_name, region, credentials)?;
51    ///
52    /// let response_data = bucket.delete_object("/test.file").await?;
53    ///
54    /// # Ok(())
55    /// # }
56    /// ```
57    pub async fn delete_object<S: AsRef<str>>(&self, path: S) -> Result<ResponseData, S3Error> {
58        let command = Command::DeleteObject;
59        let request = RequestImpl::new(self, path.as_ref(), command)?;
60        request.response_data(false).await
61    }
62
63    /// Delete tags from an S3 object.
64    ///
65    /// # Example:
66    ///
67    /// ```no_run
68    /// use s3::bucket::Bucket;
69    /// use s3::creds::Credentials;
70    /// use anyhow::Result;
71    ///
72    /// # #[tokio::main]
73    /// # async fn main() -> Result<()> {
74    ///
75    /// let bucket_name = "rust-s3-test";
76    /// let region = "us-east-1".parse()?;
77    /// let credentials = Credentials::default()?;
78    /// let bucket = Bucket::new(bucket_name, region, credentials)?;
79    ///
80    /// let response_data = bucket.delete_object_tagging("/test.file").await?;
81    ///
82    /// # Ok(())
83    /// # }
84    /// ```
85    pub async fn delete_object_tagging<S: AsRef<str>>(
86        &self,
87        path: S,
88    ) -> Result<ResponseData, S3Error> {
89        let command = Command::DeleteObjectTagging;
90        let request = RequestImpl::new(self, path.as_ref(), command)?;
91        request.response_data(false).await
92    }
93}