aws-sdk-s3 1.75.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/lib/aws-sdk-s3.rb +73 -0
  3. data/lib/aws-sdk-s3/bucket.rb +861 -0
  4. data/lib/aws-sdk-s3/bucket_acl.rb +277 -0
  5. data/lib/aws-sdk-s3/bucket_cors.rb +262 -0
  6. data/lib/aws-sdk-s3/bucket_lifecycle.rb +264 -0
  7. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +283 -0
  8. data/lib/aws-sdk-s3/bucket_logging.rb +251 -0
  9. data/lib/aws-sdk-s3/bucket_notification.rb +293 -0
  10. data/lib/aws-sdk-s3/bucket_policy.rb +242 -0
  11. data/lib/aws-sdk-s3/bucket_region_cache.rb +81 -0
  12. data/lib/aws-sdk-s3/bucket_request_payment.rb +236 -0
  13. data/lib/aws-sdk-s3/bucket_tagging.rb +251 -0
  14. data/lib/aws-sdk-s3/bucket_versioning.rb +312 -0
  15. data/lib/aws-sdk-s3/bucket_website.rb +292 -0
  16. data/lib/aws-sdk-s3/client.rb +11818 -0
  17. data/lib/aws-sdk-s3/client_api.rb +3014 -0
  18. data/lib/aws-sdk-s3/customizations.rb +34 -0
  19. data/lib/aws-sdk-s3/customizations/bucket.rb +162 -0
  20. data/lib/aws-sdk-s3/customizations/multipart_upload.rb +44 -0
  21. data/lib/aws-sdk-s3/customizations/object.rb +389 -0
  22. data/lib/aws-sdk-s3/customizations/object_summary.rb +85 -0
  23. data/lib/aws-sdk-s3/customizations/types/list_object_versions_output.rb +13 -0
  24. data/lib/aws-sdk-s3/encryption.rb +21 -0
  25. data/lib/aws-sdk-s3/encryption/client.rb +375 -0
  26. data/lib/aws-sdk-s3/encryption/decrypt_handler.rb +190 -0
  27. data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +65 -0
  28. data/lib/aws-sdk-s3/encryption/default_key_provider.rb +40 -0
  29. data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +61 -0
  30. data/lib/aws-sdk-s3/encryption/errors.rb +15 -0
  31. data/lib/aws-sdk-s3/encryption/io_auth_decrypter.rb +58 -0
  32. data/lib/aws-sdk-s3/encryption/io_decrypter.rb +36 -0
  33. data/lib/aws-sdk-s3/encryption/io_encrypter.rb +71 -0
  34. data/lib/aws-sdk-s3/encryption/key_provider.rb +31 -0
  35. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +75 -0
  36. data/lib/aws-sdk-s3/encryption/materials.rb +60 -0
  37. data/lib/aws-sdk-s3/encryption/utils.rb +81 -0
  38. data/lib/aws-sdk-s3/encryptionV2/client.rb +388 -0
  39. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +198 -0
  40. data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +103 -0
  41. data/lib/aws-sdk-s3/encryptionV2/default_key_provider.rb +38 -0
  42. data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +66 -0
  43. data/lib/aws-sdk-s3/encryptionV2/errors.rb +13 -0
  44. data/lib/aws-sdk-s3/encryptionV2/io_auth_decrypter.rb +56 -0
  45. data/lib/aws-sdk-s3/encryptionV2/io_decrypter.rb +35 -0
  46. data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +71 -0
  47. data/lib/aws-sdk-s3/encryptionV2/key_provider.rb +29 -0
  48. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +99 -0
  49. data/lib/aws-sdk-s3/encryptionV2/materials.rb +58 -0
  50. data/lib/aws-sdk-s3/encryptionV2/utils.rb +116 -0
  51. data/lib/aws-sdk-s3/encryption_v2.rb +20 -0
  52. data/lib/aws-sdk-s3/errors.rb +115 -0
  53. data/lib/aws-sdk-s3/event_streams.rb +69 -0
  54. data/lib/aws-sdk-s3/file_downloader.rb +142 -0
  55. data/lib/aws-sdk-s3/file_part.rb +78 -0
  56. data/lib/aws-sdk-s3/file_uploader.rb +70 -0
  57. data/lib/aws-sdk-s3/legacy_signer.rb +189 -0
  58. data/lib/aws-sdk-s3/multipart_file_uploader.rb +227 -0
  59. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +173 -0
  60. data/lib/aws-sdk-s3/multipart_upload.rb +401 -0
  61. data/lib/aws-sdk-s3/multipart_upload_error.rb +18 -0
  62. data/lib/aws-sdk-s3/multipart_upload_part.rb +423 -0
  63. data/lib/aws-sdk-s3/object.rb +1422 -0
  64. data/lib/aws-sdk-s3/object_acl.rb +333 -0
  65. data/lib/aws-sdk-s3/object_copier.rb +101 -0
  66. data/lib/aws-sdk-s3/object_multipart_copier.rb +182 -0
  67. data/lib/aws-sdk-s3/object_summary.rb +1181 -0
  68. data/lib/aws-sdk-s3/object_version.rb +550 -0
  69. data/lib/aws-sdk-s3/plugins/accelerate.rb +87 -0
  70. data/lib/aws-sdk-s3/plugins/bucket_arn.rb +212 -0
  71. data/lib/aws-sdk-s3/plugins/bucket_dns.rb +91 -0
  72. data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +45 -0
  73. data/lib/aws-sdk-s3/plugins/dualstack.rb +74 -0
  74. data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +28 -0
  75. data/lib/aws-sdk-s3/plugins/get_bucket_location_fix.rb +25 -0
  76. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +55 -0
  77. data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +62 -0
  78. data/lib/aws-sdk-s3/plugins/location_constraint.rb +35 -0
  79. data/lib/aws-sdk-s3/plugins/md5s.rb +84 -0
  80. data/lib/aws-sdk-s3/plugins/redirects.rb +45 -0
  81. data/lib/aws-sdk-s3/plugins/s3_host_id.rb +30 -0
  82. data/lib/aws-sdk-s3/plugins/s3_signer.rb +222 -0
  83. data/lib/aws-sdk-s3/plugins/sse_cpk.rb +70 -0
  84. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +118 -0
  85. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +97 -0
  86. data/lib/aws-sdk-s3/presigned_post.rb +686 -0
  87. data/lib/aws-sdk-s3/presigner.rb +253 -0
  88. data/lib/aws-sdk-s3/resource.rb +117 -0
  89. data/lib/aws-sdk-s3/types.rb +13154 -0
  90. data/lib/aws-sdk-s3/waiters.rb +243 -0
  91. metadata +184 -0
@@ -0,0 +1,251 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::S3
11
+
12
+ class BucketTagging
13
+
14
+ extend Aws::Deprecations
15
+
16
+ # @overload def initialize(bucket_name, options = {})
17
+ # @param [String] bucket_name
18
+ # @option options [Client] :client
19
+ # @overload def initialize(options = {})
20
+ # @option options [required, String] :bucket_name
21
+ # @option options [Client] :client
22
+ def initialize(*args)
23
+ options = Hash === args.last ? args.pop.dup : {}
24
+ @bucket_name = extract_bucket_name(args, options)
25
+ @data = options.delete(:data)
26
+ @client = options.delete(:client) || Client.new(options)
27
+ @waiter_block_warned = false
28
+ end
29
+
30
+ # @!group Read-Only Attributes
31
+
32
+ # @return [String]
33
+ def bucket_name
34
+ @bucket_name
35
+ end
36
+
37
+ # Contains the tag set.
38
+ # @return [Array<Types::Tag>]
39
+ def tag_set
40
+ data[:tag_set]
41
+ end
42
+
43
+ # @!endgroup
44
+
45
+ # @return [Client]
46
+ def client
47
+ @client
48
+ end
49
+
50
+ # Loads, or reloads {#data} for the current {BucketTagging}.
51
+ # Returns `self` making it possible to chain methods.
52
+ #
53
+ # bucket_tagging.reload.data
54
+ #
55
+ # @return [self]
56
+ def load
57
+ resp = @client.get_bucket_tagging(bucket: @bucket_name)
58
+ @data = resp.data
59
+ self
60
+ end
61
+ alias :reload :load
62
+
63
+ # @return [Types::GetBucketTaggingOutput]
64
+ # Returns the data for this {BucketTagging}. Calls
65
+ # {Client#get_bucket_tagging} if {#data_loaded?} is `false`.
66
+ def data
67
+ load unless @data
68
+ @data
69
+ end
70
+
71
+ # @return [Boolean]
72
+ # Returns `true` if this resource is loaded. Accessing attributes or
73
+ # {#data} on an unloaded resource will trigger a call to {#load}.
74
+ def data_loaded?
75
+ !!@data
76
+ end
77
+
78
+ # @deprecated Use [Aws::S3::Client] #wait_until instead
79
+ #
80
+ # Waiter polls an API operation until a resource enters a desired
81
+ # state.
82
+ #
83
+ # @note The waiting operation is performed on a copy. The original resource
84
+ # remains unchanged.
85
+ #
86
+ # ## Basic Usage
87
+ #
88
+ # Waiter will polls until it is successful, it fails by
89
+ # entering a terminal state, or until a maximum number of attempts
90
+ # are made.
91
+ #
92
+ # # polls in a loop until condition is true
93
+ # resource.wait_until(options) {|resource| condition}
94
+ #
95
+ # ## Example
96
+ #
97
+ # instance.wait_until(max_attempts:10, delay:5) do |instance|
98
+ # instance.state.name == 'running'
99
+ # end
100
+ #
101
+ # ## Configuration
102
+ #
103
+ # You can configure the maximum number of polling attempts, and the
104
+ # delay (in seconds) between each polling attempt. The waiting condition is
105
+ # set by passing a block to {#wait_until}:
106
+ #
107
+ # # poll for ~25 seconds
108
+ # resource.wait_until(max_attempts:5,delay:5) {|resource|...}
109
+ #
110
+ # ## Callbacks
111
+ #
112
+ # You can be notified before each polling attempt and before each
113
+ # delay. If you throw `:success` or `:failure` from these callbacks,
114
+ # it will terminate the waiter.
115
+ #
116
+ # started_at = Time.now
117
+ # # poll for 1 hour, instead of a number of attempts
118
+ # proc = Proc.new do |attempts, response|
119
+ # throw :failure if Time.now - started_at > 3600
120
+ # end
121
+ #
122
+ # # disable max attempts
123
+ # instance.wait_until(before_wait:proc, max_attempts:nil) {...}
124
+ #
125
+ # ## Handling Errors
126
+ #
127
+ # When a waiter is successful, it returns the Resource. When a waiter
128
+ # fails, it raises an error.
129
+ #
130
+ # begin
131
+ # resource.wait_until(...)
132
+ # rescue Aws::Waiters::Errors::WaiterFailed
133
+ # # resource did not enter the desired state in time
134
+ # end
135
+ #
136
+ # @yieldparam [Resource] resource to be used in the waiting condition.
137
+ #
138
+ # @raise [Aws::Waiters::Errors::FailureStateError] Raised when the waiter
139
+ # terminates because the waiter has entered a state that it will not
140
+ # transition out of, preventing success.
141
+ #
142
+ # yet successful.
143
+ #
144
+ # @raise [Aws::Waiters::Errors::UnexpectedError] Raised when an error is
145
+ # encountered while polling for a resource that is not expected.
146
+ #
147
+ # @raise [NotImplementedError] Raised when the resource does not
148
+ #
149
+ # @option options [Integer] :max_attempts (10) Maximum number of
150
+ # attempts
151
+ # @option options [Integer] :delay (10) Delay between each
152
+ # attempt in seconds
153
+ # @option options [Proc] :before_attempt (nil) Callback
154
+ # invoked before each attempt
155
+ # @option options [Proc] :before_wait (nil) Callback
156
+ # invoked before each wait
157
+ # @return [Resource] if the waiter was successful
158
+ def wait_until(options = {}, &block)
159
+ self_copy = self.dup
160
+ attempts = 0
161
+ options[:max_attempts] = 10 unless options.key?(:max_attempts)
162
+ options[:delay] ||= 10
163
+ options[:poller] = Proc.new do
164
+ attempts += 1
165
+ if block.call(self_copy)
166
+ [:success, self_copy]
167
+ else
168
+ self_copy.reload unless attempts == options[:max_attempts]
169
+ :retry
170
+ end
171
+ end
172
+ Aws::Waiters::Waiter.new(options).wait({})
173
+ end
174
+
175
+ # @!group Actions
176
+
177
+ # @example Request syntax with placeholder values
178
+ #
179
+ # bucket_tagging.delete()
180
+ # @param [Hash] options ({})
181
+ # @return [EmptyStructure]
182
+ def delete(options = {})
183
+ options = options.merge(bucket: @bucket_name)
184
+ resp = @client.delete_bucket_tagging(options)
185
+ resp.data
186
+ end
187
+
188
+ # @example Request syntax with placeholder values
189
+ #
190
+ # bucket_tagging.put({
191
+ # content_md5: "ContentMD5",
192
+ # tagging: { # required
193
+ # tag_set: [ # required
194
+ # {
195
+ # key: "ObjectKey", # required
196
+ # value: "Value", # required
197
+ # },
198
+ # ],
199
+ # },
200
+ # })
201
+ # @param [Hash] options ({})
202
+ # @option options [String] :content_md5
203
+ # The base64-encoded 128-bit MD5 digest of the data. You must use this
204
+ # header as a message integrity check to verify that the request body
205
+ # was not corrupted in transit. For more information, see [RFC 1864][1].
206
+ #
207
+ #
208
+ #
209
+ # [1]: http://www.ietf.org/rfc/rfc1864.txt
210
+ # @option options [required, Types::Tagging] :tagging
211
+ # Container for the `TagSet` and `Tag` elements.
212
+ # @return [EmptyStructure]
213
+ def put(options = {})
214
+ options = options.merge(bucket: @bucket_name)
215
+ resp = @client.put_bucket_tagging(options)
216
+ resp.data
217
+ end
218
+
219
+ # @!group Associations
220
+
221
+ # @return [Bucket]
222
+ def bucket
223
+ Bucket.new(
224
+ name: @bucket_name,
225
+ client: @client
226
+ )
227
+ end
228
+
229
+ # @deprecated
230
+ # @api private
231
+ def identifiers
232
+ { bucket_name: @bucket_name }
233
+ end
234
+ deprecated(:identifiers)
235
+
236
+ private
237
+
238
+ def extract_bucket_name(args, options)
239
+ value = args[0] || options.delete(:bucket_name)
240
+ case value
241
+ when String then value
242
+ when nil then raise ArgumentError, "missing required option :bucket_name"
243
+ else
244
+ msg = "expected :bucket_name to be a String, got #{value.class}"
245
+ raise ArgumentError, msg
246
+ end
247
+ end
248
+
249
+ class Collection < Aws::Resources::Collection; end
250
+ end
251
+ end
@@ -0,0 +1,312 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::S3
11
+
12
+ class BucketVersioning
13
+
14
+ extend Aws::Deprecations
15
+
16
+ # @overload def initialize(bucket_name, options = {})
17
+ # @param [String] bucket_name
18
+ # @option options [Client] :client
19
+ # @overload def initialize(options = {})
20
+ # @option options [required, String] :bucket_name
21
+ # @option options [Client] :client
22
+ def initialize(*args)
23
+ options = Hash === args.last ? args.pop.dup : {}
24
+ @bucket_name = extract_bucket_name(args, options)
25
+ @data = options.delete(:data)
26
+ @client = options.delete(:client) || Client.new(options)
27
+ @waiter_block_warned = false
28
+ end
29
+
30
+ # @!group Read-Only Attributes
31
+
32
+ # @return [String]
33
+ def bucket_name
34
+ @bucket_name
35
+ end
36
+
37
+ # The versioning state of the bucket.
38
+ # @return [String]
39
+ def status
40
+ data[:status]
41
+ end
42
+
43
+ # Specifies whether MFA delete is enabled in the bucket versioning
44
+ # configuration. This element is only returned if the bucket has been
45
+ # configured with MFA delete. If the bucket has never been so
46
+ # configured, this element is not returned.
47
+ # @return [String]
48
+ def mfa_delete
49
+ data[:mfa_delete]
50
+ end
51
+
52
+ # @!endgroup
53
+
54
+ # @return [Client]
55
+ def client
56
+ @client
57
+ end
58
+
59
+ # Loads, or reloads {#data} for the current {BucketVersioning}.
60
+ # Returns `self` making it possible to chain methods.
61
+ #
62
+ # bucket_versioning.reload.data
63
+ #
64
+ # @return [self]
65
+ def load
66
+ resp = @client.get_bucket_versioning(bucket: @bucket_name)
67
+ @data = resp.data
68
+ self
69
+ end
70
+ alias :reload :load
71
+
72
+ # @return [Types::GetBucketVersioningOutput]
73
+ # Returns the data for this {BucketVersioning}. Calls
74
+ # {Client#get_bucket_versioning} if {#data_loaded?} is `false`.
75
+ def data
76
+ load unless @data
77
+ @data
78
+ end
79
+
80
+ # @return [Boolean]
81
+ # Returns `true` if this resource is loaded. Accessing attributes or
82
+ # {#data} on an unloaded resource will trigger a call to {#load}.
83
+ def data_loaded?
84
+ !!@data
85
+ end
86
+
87
+ # @deprecated Use [Aws::S3::Client] #wait_until instead
88
+ #
89
+ # Waiter polls an API operation until a resource enters a desired
90
+ # state.
91
+ #
92
+ # @note The waiting operation is performed on a copy. The original resource
93
+ # remains unchanged.
94
+ #
95
+ # ## Basic Usage
96
+ #
97
+ # Waiter will polls until it is successful, it fails by
98
+ # entering a terminal state, or until a maximum number of attempts
99
+ # are made.
100
+ #
101
+ # # polls in a loop until condition is true
102
+ # resource.wait_until(options) {|resource| condition}
103
+ #
104
+ # ## Example
105
+ #
106
+ # instance.wait_until(max_attempts:10, delay:5) do |instance|
107
+ # instance.state.name == 'running'
108
+ # end
109
+ #
110
+ # ## Configuration
111
+ #
112
+ # You can configure the maximum number of polling attempts, and the
113
+ # delay (in seconds) between each polling attempt. The waiting condition is
114
+ # set by passing a block to {#wait_until}:
115
+ #
116
+ # # poll for ~25 seconds
117
+ # resource.wait_until(max_attempts:5,delay:5) {|resource|...}
118
+ #
119
+ # ## Callbacks
120
+ #
121
+ # You can be notified before each polling attempt and before each
122
+ # delay. If you throw `:success` or `:failure` from these callbacks,
123
+ # it will terminate the waiter.
124
+ #
125
+ # started_at = Time.now
126
+ # # poll for 1 hour, instead of a number of attempts
127
+ # proc = Proc.new do |attempts, response|
128
+ # throw :failure if Time.now - started_at > 3600
129
+ # end
130
+ #
131
+ # # disable max attempts
132
+ # instance.wait_until(before_wait:proc, max_attempts:nil) {...}
133
+ #
134
+ # ## Handling Errors
135
+ #
136
+ # When a waiter is successful, it returns the Resource. When a waiter
137
+ # fails, it raises an error.
138
+ #
139
+ # begin
140
+ # resource.wait_until(...)
141
+ # rescue Aws::Waiters::Errors::WaiterFailed
142
+ # # resource did not enter the desired state in time
143
+ # end
144
+ #
145
+ # @yieldparam [Resource] resource to be used in the waiting condition.
146
+ #
147
+ # @raise [Aws::Waiters::Errors::FailureStateError] Raised when the waiter
148
+ # terminates because the waiter has entered a state that it will not
149
+ # transition out of, preventing success.
150
+ #
151
+ # yet successful.
152
+ #
153
+ # @raise [Aws::Waiters::Errors::UnexpectedError] Raised when an error is
154
+ # encountered while polling for a resource that is not expected.
155
+ #
156
+ # @raise [NotImplementedError] Raised when the resource does not
157
+ #
158
+ # @option options [Integer] :max_attempts (10) Maximum number of
159
+ # attempts
160
+ # @option options [Integer] :delay (10) Delay between each
161
+ # attempt in seconds
162
+ # @option options [Proc] :before_attempt (nil) Callback
163
+ # invoked before each attempt
164
+ # @option options [Proc] :before_wait (nil) Callback
165
+ # invoked before each wait
166
+ # @return [Resource] if the waiter was successful
167
+ def wait_until(options = {}, &block)
168
+ self_copy = self.dup
169
+ attempts = 0
170
+ options[:max_attempts] = 10 unless options.key?(:max_attempts)
171
+ options[:delay] ||= 10
172
+ options[:poller] = Proc.new do
173
+ attempts += 1
174
+ if block.call(self_copy)
175
+ [:success, self_copy]
176
+ else
177
+ self_copy.reload unless attempts == options[:max_attempts]
178
+ :retry
179
+ end
180
+ end
181
+ Aws::Waiters::Waiter.new(options).wait({})
182
+ end
183
+
184
+ # @!group Actions
185
+
186
+ # @example Request syntax with placeholder values
187
+ #
188
+ # bucket_versioning.enable({
189
+ # content_md5: "ContentMD5",
190
+ # mfa: "MFA",
191
+ # })
192
+ # @param [Hash] options ({})
193
+ # @option options [String] :content_md5
194
+ # &gt;The base64-encoded 128-bit MD5 digest of the data. You must use
195
+ # this header as a message integrity check to verify that the request
196
+ # body was not corrupted in transit. For more information, see [RFC
197
+ # 1864][1].
198
+ #
199
+ #
200
+ #
201
+ # [1]: http://www.ietf.org/rfc/rfc1864.txt
202
+ # @option options [String] :mfa
203
+ # The concatenation of the authentication device's serial number, a
204
+ # space, and the value that is displayed on your authentication device.
205
+ # @return [EmptyStructure]
206
+ def enable(options = {})
207
+ options = Aws::Util.deep_merge(options,
208
+ bucket: @bucket_name,
209
+ versioning_configuration: {
210
+ status: "Enabled"
211
+ }
212
+ )
213
+ resp = @client.put_bucket_versioning(options)
214
+ resp.data
215
+ end
216
+
217
+ # @example Request syntax with placeholder values
218
+ #
219
+ # bucket_versioning.put({
220
+ # content_md5: "ContentMD5",
221
+ # mfa: "MFA",
222
+ # versioning_configuration: { # required
223
+ # mfa_delete: "Enabled", # accepts Enabled, Disabled
224
+ # status: "Enabled", # accepts Enabled, Suspended
225
+ # },
226
+ # })
227
+ # @param [Hash] options ({})
228
+ # @option options [String] :content_md5
229
+ # &gt;The base64-encoded 128-bit MD5 digest of the data. You must use
230
+ # this header as a message integrity check to verify that the request
231
+ # body was not corrupted in transit. For more information, see [RFC
232
+ # 1864][1].
233
+ #
234
+ #
235
+ #
236
+ # [1]: http://www.ietf.org/rfc/rfc1864.txt
237
+ # @option options [String] :mfa
238
+ # The concatenation of the authentication device's serial number, a
239
+ # space, and the value that is displayed on your authentication device.
240
+ # @option options [required, Types::VersioningConfiguration] :versioning_configuration
241
+ # Container for setting the versioning state.
242
+ # @return [EmptyStructure]
243
+ def put(options = {})
244
+ options = options.merge(bucket: @bucket_name)
245
+ resp = @client.put_bucket_versioning(options)
246
+ resp.data
247
+ end
248
+
249
+ # @example Request syntax with placeholder values
250
+ #
251
+ # bucket_versioning.suspend({
252
+ # content_md5: "ContentMD5",
253
+ # mfa: "MFA",
254
+ # })
255
+ # @param [Hash] options ({})
256
+ # @option options [String] :content_md5
257
+ # &gt;The base64-encoded 128-bit MD5 digest of the data. You must use
258
+ # this header as a message integrity check to verify that the request
259
+ # body was not corrupted in transit. For more information, see [RFC
260
+ # 1864][1].
261
+ #
262
+ #
263
+ #
264
+ # [1]: http://www.ietf.org/rfc/rfc1864.txt
265
+ # @option options [String] :mfa
266
+ # The concatenation of the authentication device's serial number, a
267
+ # space, and the value that is displayed on your authentication device.
268
+ # @return [EmptyStructure]
269
+ def suspend(options = {})
270
+ options = Aws::Util.deep_merge(options,
271
+ bucket: @bucket_name,
272
+ versioning_configuration: {
273
+ status: "Suspended"
274
+ }
275
+ )
276
+ resp = @client.put_bucket_versioning(options)
277
+ resp.data
278
+ end
279
+
280
+ # @!group Associations
281
+
282
+ # @return [Bucket]
283
+ def bucket
284
+ Bucket.new(
285
+ name: @bucket_name,
286
+ client: @client
287
+ )
288
+ end
289
+
290
+ # @deprecated
291
+ # @api private
292
+ def identifiers
293
+ { bucket_name: @bucket_name }
294
+ end
295
+ deprecated(:identifiers)
296
+
297
+ private
298
+
299
+ def extract_bucket_name(args, options)
300
+ value = args[0] || options.delete(:bucket_name)
301
+ case value
302
+ when String then value
303
+ when nil then raise ArgumentError, "missing required option :bucket_name"
304
+ else
305
+ msg = "expected :bucket_name to be a String, got #{value.class}"
306
+ raise ArgumentError, msg
307
+ end
308
+ end
309
+
310
+ class Collection < Aws::Resources::Collection; end
311
+ end
312
+ end