1#[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}