Skip to main content

objectstore_client/
delete.rs

1use crate::response::ResponseExt as _;
2use crate::{ObjectKey, Session};
3
4/// The result from a successful [`delete()`](Session::delete) call.
5pub type DeleteResponse = ();
6
7impl Session {
8    /// Deletes the object with the given `key`.
9    pub fn delete(&self, key: &str) -> DeleteBuilder {
10        DeleteBuilder {
11            session: self.clone(),
12            key: key.to_owned(),
13        }
14    }
15}
16
17/// A [`delete`](Session::delete) request builder.
18#[derive(Debug)]
19pub struct DeleteBuilder {
20    pub(crate) session: Session,
21    pub(crate) key: ObjectKey,
22}
23
24impl DeleteBuilder {
25    /// Sends the delete request.
26    pub async fn send(self) -> crate::Result<DeleteResponse> {
27        self.session
28            .request(reqwest::Method::DELETE, &self.key)?
29            .send()
30            .await?
31            .error_for_status_and_drain()
32            .await?
33            .drain_body()
34            .await;
35        Ok(())
36    }
37}