xt_oss/oss/api/bucket/
referer.rs1use crate::oss;
2
3use self::builders::{GetBucketRefererBuilder, PutBucketRefererBuilder};
4
5pub mod builders {
6 use crate::oss::{
7 self,
8 api::{self, ApiResponseFrom},
9 entities::referer::RefererConfiguration,
10 http,
11 };
12
13 #[derive(Debug)]
14 pub struct PutBucketRefererBuilder<'a> {
15 client: &'a oss::Client<'a>,
16 config: RefererConfiguration,
17 }
18
19 impl<'a> PutBucketRefererBuilder<'a> {
20 pub fn new(cilent: &'a oss::Client) -> Self {
21 Self {
22 client: cilent,
23 config: RefererConfiguration::default(),
24 }
25 }
26
27 pub fn with_config(mut self, value: RefererConfiguration) -> Self {
28 self.config = value;
29 self
30 }
31
32 fn config(&self) -> String {
33 quick_xml::se::to_string(&self.config).unwrap()
34 }
35
36 pub async fn execute(&self) -> api::ApiResult {
37 let res = format!("/{}/?{}", self.client.bucket(), "referer");
38 let url = format!("{}/?{}", self.client.base_url(), "referer");
39 let config = self.config();
40 let data = oss::Bytes::from(config);
41
42 let resp = self
43 .client
44 .request
45 .task()
46 .with_url(&url)
47 .with_resource(&res)
48 .with_method(http::Method::PUT)
49 .with_body(data)
50 .execute()
51 .await?;
52
53 Ok(ApiResponseFrom(resp).to_empty().await)
54 }
55 }
56
57 pub struct GetBucketRefererBuilder<'a> {
58 client: &'a oss::Client<'a>,
59 }
60
61 impl<'a> GetBucketRefererBuilder<'a> {
62 pub fn new(cilent: &'a oss::Client) -> Self {
63 Self { client: cilent }
64 }
65
66 pub async fn execute(&self) -> api::ApiResult<RefererConfiguration> {
67 let res = format!("/{}/?{}", self.client.options.bucket, "referer");
68 let url = format!("{}?{}", self.client.options.base_url(), "referer");
69
70 let resp = self
71 .client
72 .request
73 .task()
74 .with_url(&url)
75 .with_resource(&res)
76 .execute()
77 .await?;
78 Ok(ApiResponseFrom(resp).to_type().await)
79 }
80 }
81}
82
83#[allow(non_snake_case)]
85impl<'a> oss::Client<'a> {
86 pub fn PutBucketReferer(&self) -> PutBucketRefererBuilder {
91 PutBucketRefererBuilder::new(self)
92 }
93
94 pub fn GetBucketReferer(&self) -> GetBucketRefererBuilder {
99 GetBucketRefererBuilder::new(self)
100 }
101}