aliyun_oss_rs/client/
oss_client.rs1#[cfg(feature = "async")]
2use super::{DescribeRegions, ListBuckets};
3use crate::{OssBucket, oss::Oss};
4
5#[derive(Debug, Clone)]
7pub struct OssClient {
8 pub(crate) oss: Oss,
9}
10
11impl OssClient {
12 pub fn new(ak_id: &str, ak_secret: &str) -> Self {
18 OssClient {
19 oss: Oss::new(ak_id, ak_secret),
20 }
21 }
22 pub fn disable_https(mut self) -> Self {
24 self.oss.set_https(false);
25 self
26 }
27 pub fn with_security_token(mut self, token: impl Into<String>) -> Self {
29 self.oss.set_security_token(token);
30 self
31 }
32 pub fn set_security_token(&mut self, token: impl Into<String>) {
34 self.oss.set_security_token(token);
35 }
36 pub fn bucket(&self, bucket: &str, endpoint: &str) -> OssBucket {
38 OssBucket::new(self.oss.clone(), bucket, endpoint)
39 }
40 #[cfg(feature = "async")]
42 pub fn describe_regions(&self) -> DescribeRegions {
43 DescribeRegions::new(self.oss.clone())
44 }
45 #[cfg(feature = "async")]
47 pub fn list_buckets(&self) -> ListBuckets {
48 ListBuckets::new(self.oss.clone())
49 }
50}
51
52#[cfg(test)]
53mod tests {
54 use super::*;
55
56 #[test]
57 fn test_client_basic() {
58 let client = OssClient::new("id", "secret");
59 assert_eq!(client.oss.ak_id, "id");
60 let client = client.clone().disable_https();
61 assert!(!client.oss.enable_https);
62 let client = client.clone().with_security_token("token");
63 assert_eq!(client.oss.security_token.as_deref(), Some("token"));
64 let mut client_mut = client.clone();
65 client_mut.set_security_token("token2");
66 assert_eq!(client_mut.oss.security_token.as_deref(), Some("token2"));
67 let bucket = client.bucket("bucket", "endpoint");
68 assert_eq!(bucket.oss.bucket.as_deref(), Some("bucket"));
69 assert_eq!(bucket.oss.endpoint.as_ref(), "endpoint");
70 assert_eq!(bucket.oss.security_token.as_deref(), Some("token"));
71 }
72}