xt_oss/oss/api/bucket/
payment.rs1pub mod builders {
2 use oss::http;
3
4 use crate::oss::{
5 self,
6 api::{self, ApiResponseFrom},
7 entities::payment::{Payer, RequestPaymentConfiguration},
8 };
9 pub struct PutBucketRequestPaymentBuilder<'a> {
10 client: &'a oss::Client<'a>,
11 config: RequestPaymentConfiguration,
12 }
13
14 impl<'a> PutBucketRequestPaymentBuilder<'a> {
15 pub(crate) fn new(client: &'a oss::Client, payer: Payer) -> Self {
16 Self {
17 client,
18 config: RequestPaymentConfiguration { payer },
19 }
20 }
21
22 fn config(&self) -> String {
23 quick_xml::se::to_string(&self.config).unwrap()
24 }
25
26 pub async fn execute(&self) -> api::ApiResult {
27 let res = format!("/{}/?requestPayment", self.client.bucket());
28 let url = format!("{}?requestPayment", self.client.base_url());
29 let content = oss::Bytes::from(self.config());
30 let resp = self
31 .client
32 .request
33 .task()
34 .with_url(&url)
35 .with_method(http::Method::PUT)
36 .with_body(content)
37 .with_resource(&res)
38 .execute_timeout(self.client.timeout())
39 .await?;
40
41 Ok(ApiResponseFrom(resp).to_empty().await)
42 }
43 }
44
45 pub struct GetBucketRequestPaymentBuilder<'a> {
46 client: &'a oss::Client<'a>,
47 }
48
49 impl<'a> GetBucketRequestPaymentBuilder<'a> {
50 pub(crate) fn new(client: &'a oss::Client) -> Self {
51 Self { client }
52 }
53
54 pub async fn execute(&self) -> api::ApiResult<RequestPaymentConfiguration> {
55 let res = format!("/{}/?requestPayment", self.client.bucket());
56 let url = format!("{}/?requestPayment", self.client.base_url());
57
58 let resp = self
59 .client
60 .request
61 .task()
62 .with_url(&url)
63 .with_resource(&res)
64 .execute_timeout(self.client.timeout())
65 .await?;
66
67 Ok(ApiResponseFrom(resp).to_type().await)
68 }
69 }
70}
71
72use crate::oss::{self, entities::payment::Payer};
73
74use self::builders::{GetBucketRequestPaymentBuilder, PutBucketRequestPaymentBuilder};
75#[allow(non_snake_case)]
77impl<'a> oss::Client<'a> {
78 pub fn PutBucketRequestPayment(&self, payer: Payer) -> PutBucketRequestPaymentBuilder {
83 PutBucketRequestPaymentBuilder::new(self, payer)
84 }
85
86 pub fn GetBucketRequestPayment(&self) -> GetBucketRequestPaymentBuilder {
91 GetBucketRequestPaymentBuilder::new(&self)
92 }
93}