use std::time::Duration;
use crate::Result;
use esthri_internals::rusoto::{
util::{PreSignedRequest, PreSignedRequestOption},
AwsCredentials, DeleteObjectRequest, Region,
};
use reqwest::Client;
use super::DEAFULT_EXPIRATION;
pub fn presign_delete(
credentials: &AwsCredentials,
region: &Region,
bucket: impl AsRef<str>,
key: impl AsRef<str>,
expiration: Option<Duration>,
) -> String {
let options = PreSignedRequestOption {
expires_in: expiration.unwrap_or(DEAFULT_EXPIRATION),
};
DeleteObjectRequest {
bucket: bucket.as_ref().to_owned(),
key: key.as_ref().to_owned(),
..Default::default()
}
.get_presigned_url(region, credentials, &options)
}
pub async fn delete_file_presigned(client: &Client, presigned_url: impl AsRef<str>) -> Result<()> {
client
.delete(presigned_url.as_ref())
.send()
.await?
.error_for_status()?;
Ok(())
}