xt_oss/oss/api/bucket/
acceleration.rs1use crate::oss;
2
3use self::builders::{GetBucketTransferAccelerationBuilder, PutBucketTransferAccelerationBuilder};
4
5pub mod builders {
6
7 use crate::oss::{
8 self,
9 api::{self, ApiResponseFrom},
10 entities::acceleration::TransferAccelerationConfiguration,
11 http,
12 };
13
14 pub struct PutBucketTransferAccelerationBuilder<'a> {
15 client: &'a oss::Client<'a>,
16 enabled: Option<bool>,
17 }
18
19 impl<'a> PutBucketTransferAccelerationBuilder<'a> {
20 pub(crate) fn new(client: &'a oss::Client, value: bool) -> Self {
21 Self {
22 client,
23 enabled: Some(value),
24 }
25 }
26
27 pub async fn execute(&self) -> api::ApiResult<()> {
28 let res = format!("/{}/?transferAcceleration", self.client.bucket());
29 let url = format!("{}/?transferAcceleration", self.client.base_url());
30
31 let config = TransferAccelerationConfiguration {
32 enabled: self.enabled.unwrap(),
33 };
34 let data = oss::Bytes::from(quick_xml::se::to_string(&config).unwrap());
35 let resp = self
36 .client
37 .request
38 .task()
39 .with_url(&url)
40 .with_resource(&res)
41 .with_method(http::Method::PUT)
42 .with_body(data)
43 .execute_timeout(self.client.timeout())
44 .await?;
45 Ok(ApiResponseFrom(resp).to_empty().await)
46 }
47 }
48
49 pub struct GetBucketTransferAccelerationBuilder<'a> {
51 client: &'a oss::Client<'a>,
52 }
53
54 impl<'a> GetBucketTransferAccelerationBuilder<'a> {
55 pub(crate) fn new(client: &'a oss::Client) -> Self {
56 Self { client }
57 }
58
59 pub async fn execute(&self) -> api::ApiResult<TransferAccelerationConfiguration> {
60 let res = format!("/{}/?transferAcceleration", self.client.bucket());
61 let url = format!("{}/?transferAcceleration", self.client.base_url());
62 let resp = self
63 .client
64 .request
65 .task()
66 .with_url(&url)
67 .with_resource(&res)
68 .execute_timeout(self.client.timeout())
69 .await?;
70
71 Ok(ApiResponseFrom(resp).to_type().await)
72 }
73 }
74}
75
76#[allow(non_snake_case)]
78impl<'a> oss::Client<'a> {
79 pub fn PutBucketTransferAcceleration(
85 &self,
86 value: bool,
87 ) -> PutBucketTransferAccelerationBuilder<'_> {
88 PutBucketTransferAccelerationBuilder::new(&self, value)
89 }
90
91 pub fn GetBucketTransferAcceleration(&self) -> GetBucketTransferAccelerationBuilder {
96 GetBucketTransferAccelerationBuilder::new(&self)
97 }
98}