use crate::oss;
use self::builders::{GetBucketTransferAccelerationBuilder, PutBucketTransferAccelerationBuilder};
pub mod builders {
use crate::oss::{
self,
api::{self, ApiResponseFrom},
entities::acceleration::TransferAccelerationConfiguration,
http,
};
pub struct PutBucketTransferAccelerationBuilder<'a> {
client: &'a oss::Client<'a>,
enabled: Option<bool>,
}
impl<'a> PutBucketTransferAccelerationBuilder<'a> {
pub(crate) fn new(client: &'a oss::Client, value: bool) -> Self {
Self {
client,
enabled: Some(value),
}
}
pub async fn execute(&self) -> api::ApiResult<()> {
let res = format!("/{}/?transferAcceleration", self.client.bucket());
let url = format!("{}/?transferAcceleration", self.client.base_url());
let config = TransferAccelerationConfiguration {
enabled: self.enabled.unwrap(),
};
let data = oss::Bytes::from(quick_xml::se::to_string(&config).unwrap());
let resp = self
.client
.request
.task()
.with_url(&url)
.with_resource(&res)
.with_method(http::Method::PUT)
.with_body(data)
.execute_timeout(self.client.timeout())
.await?;
Ok(ApiResponseFrom(resp).to_empty().await)
}
}
pub struct GetBucketTransferAccelerationBuilder<'a> {
client: &'a oss::Client<'a>,
}
impl<'a> GetBucketTransferAccelerationBuilder<'a> {
pub(crate) fn new(client: &'a oss::Client) -> Self {
Self { client }
}
pub async fn execute(&self) -> api::ApiResult<TransferAccelerationConfiguration> {
let res = format!("/{}/?transferAcceleration", self.client.bucket());
let url = format!("{}/?transferAcceleration", self.client.base_url());
let resp = self
.client
.request
.task()
.with_url(&url)
.with_resource(&res)
.execute_timeout(self.client.timeout())
.await?;
Ok(ApiResponseFrom(resp).to_type().await)
}
}
}
#[allow(non_snake_case)]
impl<'a> oss::Client<'a> {
pub fn PutBucketTransferAcceleration(
&self,
value: bool,
) -> PutBucketTransferAccelerationBuilder<'_> {
PutBucketTransferAccelerationBuilder::new(&self, value)
}
pub fn GetBucketTransferAcceleration(&self) -> GetBucketTransferAccelerationBuilder {
GetBucketTransferAccelerationBuilder::new(&self)
}
}