aliyun_oss_rs/bucket/
mod.rs

1//! A bucket is a container for storing objects; every object must belong to a bucket.
2
3#[doc(hidden)]
4pub use self::oss_bucket::OssBucket;
5#[cfg(feature = "async")]
6pub use self::{
7    abort_bucket_worm::AbortBucketWorm,
8    complete_bucket_worm::CompleteBucketWorm,
9    del_bucket::DelBucket,
10    del_bucket_cors::DelBucketCors,
11    del_bucket_encryption::DelBucketEncryption,
12    del_bucket_inventory::DelBucketInventory,
13    del_bucket_lifecycle::DelBucketLifecycle,
14    del_bucket_logging::DelBucketLogging,
15    del_bucket_policy::DelBucketPolicy,
16    del_bucket_referer::DelBucketReferer,
17    del_bucket_website::DelBucketWebsite,
18    del_objects::DelObjects,
19    extend_bucket_worm::ExtendBucketWorm,
20    get_bucket_acl::GetBucketAcl,
21    get_bucket_cors::GetBucketCors,
22    get_bucket_encryption::GetBucketEncryption,
23    get_bucket_info::GetBucketInfo,
24    get_bucket_inventory::GetBucketInventory,
25    get_bucket_lifecycle::GetBucketLifecycle,
26    get_bucket_location::GetBucketLocation,
27    get_bucket_logging::GetBucketLogging,
28    get_bucket_policy::GetBucketPolicy,
29    get_bucket_referer::GetBucketReferer,
30    get_bucket_stat::GetBucketStat,
31    get_bucket_website::GetBucketWebsite,
32    get_bucket_worm::GetBucketWorm,
33    initiate_bucket_worm::InitiateBucketWorm,
34    list_bucket_inventory::ListBucketInventory,
35    list_multipart_uploads::ListUploads,
36    list_objects::ListObjects,
37    put_bucket::PutBucket,
38    put_bucket_acl::PutBucketAcl,
39    put_bucket_cors::{CorsRule, PutBucketCors},
40    put_bucket_encryption::PutBucketEncryption,
41    put_bucket_inventory::PutBucketInventory,
42    put_bucket_lifecycle::PutBucketLifecycle,
43    put_bucket_logging::PutBucketLogging,
44    put_bucket_policy::PutBucketPolicy,
45    put_bucket_referer::PutBucketReferer,
46    put_bucket_website::PutBucketWebsite,
47};
48
49#[cfg(feature = "sync")]
50pub use self::{
51    del_bucket_logging_sync::DelBucketLoggingSync, get_bucket_acl_sync::GetBucketAclSync,
52    get_bucket_location_sync::GetBucketLocationSync, get_bucket_logging_sync::GetBucketLoggingSync,
53    put_bucket_acl_sync::PutBucketAclSync, put_bucket_logging_sync::PutBucketLoggingSync,
54};
55
56#[cfg(feature = "async")]
57mod abort_bucket_worm;
58#[cfg(feature = "async")]
59mod complete_bucket_worm;
60#[cfg(feature = "async")]
61mod del_bucket;
62#[cfg(feature = "async")]
63mod del_bucket_cors;
64#[cfg(feature = "async")]
65mod del_bucket_encryption;
66#[cfg(feature = "async")]
67mod del_bucket_inventory;
68#[cfg(feature = "async")]
69mod del_bucket_lifecycle;
70#[cfg(feature = "async")]
71mod del_bucket_logging;
72#[cfg(feature = "async")]
73mod del_bucket_policy;
74#[cfg(feature = "async")]
75mod del_bucket_referer;
76#[cfg(feature = "async")]
77mod del_bucket_website;
78#[cfg(feature = "async")]
79mod del_objects;
80#[cfg(feature = "async")]
81mod extend_bucket_worm;
82#[cfg(feature = "async")]
83mod get_bucket_acl;
84#[cfg(feature = "async")]
85mod get_bucket_cors;
86#[cfg(feature = "async")]
87mod get_bucket_encryption;
88#[cfg(feature = "async")]
89mod get_bucket_info;
90#[cfg(feature = "async")]
91mod get_bucket_inventory;
92#[cfg(feature = "async")]
93mod get_bucket_lifecycle;
94#[cfg(feature = "async")]
95mod get_bucket_location;
96#[cfg(feature = "async")]
97mod get_bucket_logging;
98#[cfg(feature = "async")]
99mod get_bucket_policy;
100#[cfg(feature = "async")]
101mod get_bucket_referer;
102#[cfg(feature = "async")]
103mod get_bucket_stat;
104#[cfg(feature = "async")]
105mod get_bucket_website;
106#[cfg(feature = "async")]
107mod get_bucket_worm;
108#[cfg(feature = "async")]
109mod initiate_bucket_worm;
110#[cfg(feature = "async")]
111mod list_bucket_inventory;
112#[cfg(feature = "async")]
113mod list_multipart_uploads;
114#[cfg(feature = "async")]
115mod list_objects;
116mod oss_bucket;
117#[cfg(feature = "async")]
118mod put_bucket;
119#[cfg(feature = "async")]
120mod put_bucket_acl;
121#[cfg(feature = "async")]
122mod put_bucket_cors;
123#[cfg(feature = "async")]
124mod put_bucket_encryption;
125#[cfg(feature = "async")]
126mod put_bucket_inventory;
127#[cfg(feature = "async")]
128mod put_bucket_lifecycle;
129#[cfg(feature = "async")]
130mod put_bucket_logging;
131#[cfg(feature = "async")]
132mod put_bucket_policy;
133#[cfg(feature = "async")]
134mod put_bucket_referer;
135#[cfg(feature = "async")]
136mod put_bucket_website;
137
138#[cfg(feature = "sync")]
139mod del_bucket_logging_sync;
140#[cfg(feature = "sync")]
141mod get_bucket_acl_sync;
142#[cfg(feature = "sync")]
143mod get_bucket_location_sync;
144#[cfg(feature = "sync")]
145mod get_bucket_logging_sync;
146#[cfg(feature = "sync")]
147mod put_bucket_acl_sync;
148#[cfg(feature = "sync")]
149mod put_bucket_logging_sync;
150
151#[cfg(feature = "async")]
152#[derive(Debug, Default, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
153#[serde(rename_all = "PascalCase")]
154#[serde(rename = "CORSConfiguration")]
155pub(super) struct CorsConfiguration {
156    #[serde(rename = "CORSRule", default)]
157    pub(crate) rules: Vec<put_bucket_cors::CorsRule>,
158}
159
160#[cfg(feature = "async")]
161#[derive(Debug, Default, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
162#[serde(rename_all = "PascalCase")]
163#[serde(rename = "RefererConfiguration")]
164pub struct RefererConfiguration {
165    #[serde(rename = "AllowEmptyReferer")]
166    pub allow_empty_referer: bool,
167    #[serde(rename = "RefererList", default)]
168    pub referer_list: RefererList,
169}
170
171#[cfg(feature = "async")]
172#[derive(Debug, Default, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
173#[serde(rename_all = "PascalCase")]
174pub struct RefererList {
175    #[serde(rename = "Referer", default)]
176    pub items: Vec<String>,
177}
178
179#[cfg(feature = "async")]
180impl RefererConfiguration {
181    pub fn referers(&self) -> &[String] {
182        &self.referer_list.items
183    }
184}
185
186#[cfg(feature = "async")]
187#[derive(Debug, Default, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
188#[serde(rename_all = "PascalCase")]
189#[serde(rename = "WebsiteConfiguration")]
190pub struct WebsiteConfiguration {
191    #[serde(rename = "IndexDocument", skip_serializing_if = "Option::is_none")]
192    pub index_document: Option<IndexDocument>,
193    #[serde(rename = "ErrorDocument", skip_serializing_if = "Option::is_none")]
194    pub error_document: Option<ErrorDocument>,
195    #[serde(rename = "RoutingRules", skip_serializing_if = "Option::is_none")]
196    pub routing_rules: Option<RoutingRules>,
197}
198
199#[cfg(feature = "async")]
200#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
201#[serde(rename_all = "PascalCase")]
202pub struct IndexDocument {
203    #[serde(rename = "Suffix")]
204    pub suffix: String,
205}
206
207#[cfg(feature = "async")]
208#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
209#[serde(rename_all = "PascalCase")]
210pub struct ErrorDocument {
211    #[serde(rename = "Key")]
212    pub key: String,
213}
214
215#[cfg(feature = "async")]
216#[derive(Debug, Default, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
217#[serde(rename_all = "PascalCase")]
218pub struct RoutingRules {
219    #[serde(rename = "RoutingRule", default)]
220    pub rules: Vec<RoutingRule>,
221}
222
223#[cfg(feature = "async")]
224#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
225#[serde(rename_all = "PascalCase")]
226pub struct RoutingRule {
227    #[serde(rename = "Condition", skip_serializing_if = "Option::is_none")]
228    pub condition: Option<RoutingRuleCondition>,
229    #[serde(rename = "Redirect")]
230    pub redirect: RoutingRuleRedirect,
231}
232
233#[cfg(feature = "async")]
234#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
235#[serde(rename_all = "PascalCase")]
236pub struct RoutingRuleCondition {
237    #[serde(rename = "KeyPrefixEquals", skip_serializing_if = "Option::is_none")]
238    pub key_prefix_equals: Option<String>,
239    #[serde(
240        rename = "HttpErrorCodeReturnedEquals",
241        skip_serializing_if = "Option::is_none"
242    )]
243    pub http_error_code_returned_equals: Option<String>,
244}
245
246#[cfg(feature = "async")]
247#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
248#[serde(rename_all = "PascalCase")]
249pub struct RoutingRuleRedirect {
250    #[serde(rename = "Protocol", skip_serializing_if = "Option::is_none")]
251    pub protocol: Option<String>,
252    #[serde(rename = "HostName", skip_serializing_if = "Option::is_none")]
253    pub host_name: Option<String>,
254    #[serde(rename = "ReplaceKeyWith", skip_serializing_if = "Option::is_none")]
255    pub replace_key_with: Option<String>,
256    #[serde(
257        rename = "ReplaceKeyPrefixWith",
258        skip_serializing_if = "Option::is_none"
259    )]
260    pub replace_key_prefix_with: Option<String>,
261    #[serde(rename = "HttpRedirectCode", skip_serializing_if = "Option::is_none")]
262    pub http_redirect_code: Option<String>,
263}
264
265#[cfg(feature = "async")]
266#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
267#[serde(rename_all = "PascalCase")]
268#[serde(rename = "ServerSideEncryptionConfiguration")]
269pub struct BucketEncryption {
270    #[serde(rename = "Rule")]
271    pub rule: ServerSideEncryptionRule,
272}
273
274#[cfg(feature = "async")]
275impl Default for BucketEncryption {
276    fn default() -> Self {
277        BucketEncryption {
278            rule: ServerSideEncryptionRule {
279                default_sse: ApplyServerSideEncryptionByDefault {
280                    sse_algorithm: "AES256".into(),
281                    kms_master_key_id: None,
282                    kms_data_encryption: None,
283                },
284            },
285        }
286    }
287}
288
289#[cfg(feature = "async")]
290#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
291#[serde(rename_all = "PascalCase")]
292pub struct ServerSideEncryptionRule {
293    #[serde(rename = "ApplyServerSideEncryptionByDefault")]
294    pub default_sse: ApplyServerSideEncryptionByDefault,
295}
296
297#[cfg(feature = "async")]
298#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
299#[serde(rename_all = "PascalCase")]
300pub struct ApplyServerSideEncryptionByDefault {
301    #[serde(rename = "SSEAlgorithm")]
302    pub sse_algorithm: String,
303    #[serde(rename = "KMSMasterKeyID", skip_serializing_if = "Option::is_none")]
304    pub kms_master_key_id: Option<String>,
305    #[serde(rename = "KMSDataEncryption", skip_serializing_if = "Option::is_none")]
306    pub kms_data_encryption: Option<String>,
307}
308
309#[cfg(feature = "async")]
310#[derive(Debug, Clone, serde_derive::Serialize, serde_derive::Deserialize)]
311#[serde(rename_all = "PascalCase")]
312#[serde(rename = "WormConfiguration")]
313pub struct BucketWormConfiguration {
314    #[serde(rename = "WormId", skip_serializing_if = "Option::is_none")]
315    pub worm_id: Option<String>,
316    #[serde(rename = "State", skip_serializing_if = "Option::is_none")]
317    pub state: Option<String>,
318    #[serde(rename = "CreationDate", skip_serializing_if = "Option::is_none")]
319    pub creation_date: Option<String>,
320    #[serde(
321        rename = "RetentionPeriodInDays",
322        skip_serializing_if = "Option::is_none"
323    )]
324    pub retention_period_in_days: Option<u32>,
325}