ali_oss_rs/blocking/
cname.rs1use crate::{
2 cname_common::{CnameInfo, ListCnameResult},
3 error::Error,
4 request::{OssRequest, RequestMethod},
5 util::validate_bucket_name,
6 Result,
7};
8
9use super::Client;
10
11pub trait CnameOperations {
12 fn list_cname<S>(&self, bucket_name: S) -> Result<Vec<CnameInfo>>
16 where
17 S: AsRef<str>;
18}
19
20impl CnameOperations for Client {
21 fn list_cname<S>(&self, bucket_name: S) -> Result<Vec<CnameInfo>>
25 where
26 S: AsRef<str>,
27 {
28 let bucket_name = bucket_name.as_ref();
29
30 if !validate_bucket_name(bucket_name) {
31 return Err(Error::Other(format!("invalid bucket name: {}", bucket_name)));
32 }
33
34 let request = OssRequest::new().method(RequestMethod::Get).bucket(bucket_name).add_query("cname", "");
35
36 let (_, xml) = self.do_request::<String>(request)?;
37
38 let ListCnameResult { cnames } = ListCnameResult::from_xml(&xml)?;
39
40 Ok(cnames)
41 }
42}