azure-storage 0.14.0.preview → 0.15.0.preview
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/azure/storage/blob/append.rb +6 -0
- data/lib/azure/storage/blob/blob.rb +80 -3
- data/lib/azure/storage/blob/blob_service.rb +29 -8
- data/lib/azure/storage/blob/block.rb +22 -2
- data/lib/azure/storage/blob/container.rb +57 -6
- data/lib/azure/storage/blob/page.rb +25 -2
- data/lib/azure/storage/client.rb +10 -10
- data/lib/azure/storage/client_options.rb +6 -3
- data/lib/azure/storage/configurable.rb +50 -17
- data/lib/azure/storage/core/auth/anonymous_signer.rb +44 -0
- data/lib/azure/storage/core/filter/retry_filter.rb +123 -12
- data/lib/azure/storage/default.rb +10 -1
- data/lib/azure/storage/file/directory.rb +13 -3
- data/lib/azure/storage/file/file.rb +17 -4
- data/lib/azure/storage/file/file_service.rb +19 -12
- data/lib/azure/storage/file/share.rb +16 -4
- data/lib/azure/storage/queue/queue_service.rb +26 -13
- data/lib/azure/storage/service/geo_replication.rb +40 -0
- data/lib/azure/storage/service/serialization.rb +26 -0
- data/lib/azure/storage/service/storage_service.rb +144 -20
- data/lib/azure/storage/service/storage_service_stats.rb +39 -0
- data/lib/azure/storage/table/table_service.rb +33 -14
- data/lib/azure/storage/version.rb +1 -1
- metadata +5 -2
@@ -84,6 +84,8 @@ module Azure::Storage
|
|
84
84
|
# * +:if_none_match+ - String. An ETag value. Specify an ETag value for this conditional header to create a new blob
|
85
85
|
# only if the blob's ETag value does not match the value specified. If the values are identical,
|
86
86
|
# the Blob service returns status code 412 (Precondition Failed).
|
87
|
+
# * +:lease_id+ - String. Required if the blob has an active lease. To perform this operation on a blob with an active lease,
|
88
|
+
# specify the valid lease ID for this header.
|
87
89
|
#
|
88
90
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179451.aspx
|
89
91
|
#
|
@@ -110,6 +112,7 @@ module Azure::Storage
|
|
110
112
|
|
111
113
|
StorageService.add_metadata_to_headers options[:metadata], headers
|
112
114
|
add_blob_conditional_headers options, headers
|
115
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
113
116
|
|
114
117
|
# call PutBlob with empty body
|
115
118
|
response = call(:put, uri, content, headers, options)
|
@@ -138,6 +141,8 @@ module Azure::Storage
|
|
138
141
|
# * +:timeout+ - Integer. A timeout in seconds.
|
139
142
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
140
143
|
# in the analytics logs when storage analytics logging is enabled.
|
144
|
+
# * +:lease_id+ - String. Required if the blob has an active lease. To perform this operation on a blob with an
|
145
|
+
# active lease, specify the valid lease ID for this header.
|
141
146
|
#
|
142
147
|
# See http://msdn.microsoft.com/en-us/library/azure/dd135726.aspx
|
143
148
|
#
|
@@ -151,6 +156,7 @@ module Azure::Storage
|
|
151
156
|
|
152
157
|
headers = StorageService.common_headers
|
153
158
|
StorageService.with_header headers, "Content-MD5", options[:content_md5]
|
159
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
154
160
|
|
155
161
|
response = call(:put, uri, content, headers, options)
|
156
162
|
response.headers["Content-MD5"]
|
@@ -194,6 +200,8 @@ module Azure::Storage
|
|
194
200
|
# * +:timeout+ - Integer. A timeout in seconds.
|
195
201
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
196
202
|
# in the analytics logs when storage analytics logging is enabled.
|
203
|
+
# * +:lease_id+ - String. Required if the blob has an active lease. To perform this operation on a blob with an
|
204
|
+
# active lease, specify the valid lease ID for this header.
|
197
205
|
#
|
198
206
|
# This operation also supports the use of conditional headers to commit the block list if a specified condition is met.
|
199
207
|
# For more information, see https://msdn.microsoft.com/en-us/library/azure/dd179371.aspx
|
@@ -219,6 +227,7 @@ module Azure::Storage
|
|
219
227
|
|
220
228
|
StorageService.add_metadata_to_headers(options[:metadata], headers)
|
221
229
|
add_blob_conditional_headers(options, headers)
|
230
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
222
231
|
end
|
223
232
|
|
224
233
|
body = Serialization.block_list_to_xml(block_list)
|
@@ -251,6 +260,14 @@ module Azure::Storage
|
|
251
260
|
# * +:timeout+ - Integer. A timeout in seconds.
|
252
261
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
253
262
|
# in the analytics logs when storage analytics logging is enabled.
|
263
|
+
# * +:location_mode+ - LocationMode. Specifies the location mode used to decide
|
264
|
+
# which location the request should be sent to.
|
265
|
+
# * +:lease_id+ - String. If this header is specified, the operation will be performed only if both of the
|
266
|
+
# following conditions are met:
|
267
|
+
# - The blob's lease is currently active.
|
268
|
+
# - The lease ID specified in the request matches that of the blob.
|
269
|
+
# If this header is specified and both of these conditions are not met, the request will fail
|
270
|
+
# and the operation will fail with status code 412 (Precondition Failed).
|
254
271
|
#
|
255
272
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179400.aspx
|
256
273
|
#
|
@@ -263,9 +280,12 @@ module Azure::Storage
|
|
263
280
|
StorageService.with_query query, "blocklisttype", options[:blocklist_type].to_s if options[:blocklist_type]
|
264
281
|
StorageService.with_query query, "timeout", options[:timeout].to_s if options[:timeout]
|
265
282
|
|
266
|
-
|
283
|
+
headers = options[:lease_id] ? { "x-ms-lease-id" => options[:lease_id] } : {}
|
284
|
+
|
285
|
+
options[:request_location_mode] = RequestLocationMode::PRIMARY_OR_SECONDARY
|
286
|
+
uri = blob_uri(container, blob, query, options)
|
267
287
|
|
268
|
-
response = call(:get, uri, nil,
|
288
|
+
response = call(:get, uri, nil, headers, options)
|
269
289
|
|
270
290
|
Serialization.block_list_from_xml(response.body)
|
271
291
|
end
|
@@ -23,7 +23,6 @@
|
|
23
23
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
24
24
|
# THE SOFTWARE.
|
25
25
|
#--------------------------------------------------------------------------
|
26
|
-
require "azure/storage/blob/serialization"
|
27
26
|
|
28
27
|
module Azure::Storage::Blob
|
29
28
|
module Container
|
@@ -97,6 +96,11 @@ module Azure::Storage::Blob
|
|
97
96
|
# * +:timeout+ - Integer. A timeout in seconds.
|
98
97
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
99
98
|
# in the analytics logs when storage analytics logging is enabled.
|
99
|
+
# * +:location_mode+ - LocationMode. Specifies the location mode used to decide
|
100
|
+
# which location the request should be sent to.
|
101
|
+
# * +:lease_id+ - String. If specified, Get Container Properties only succeeds if the container’s lease is
|
102
|
+
# active and matches this ID. If there is no active lease or the ID does not match, 412
|
103
|
+
# (Precondition Failed) is returned.
|
100
104
|
#
|
101
105
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179370.aspx
|
102
106
|
#
|
@@ -106,8 +110,11 @@ module Azure::Storage::Blob
|
|
106
110
|
query = {}
|
107
111
|
query["timeout"] = options[:timeout].to_s if options[:timeout]
|
108
112
|
|
113
|
+
headers = options[:lease_id] ? { "x-ms-lease-id" => options[:lease_id] } : {}
|
114
|
+
|
109
115
|
# Call
|
110
|
-
|
116
|
+
options[:request_location_mode] = Azure::Storage::RequestLocationMode::PRIMARY_OR_SECONDARY
|
117
|
+
response = call(:get, container_uri(name, query, options), nil, headers, options)
|
111
118
|
|
112
119
|
# result
|
113
120
|
container = Serialization.container_from_headers(response.headers)
|
@@ -128,6 +135,11 @@ module Azure::Storage::Blob
|
|
128
135
|
# * +:timeout+ - Integer. A timeout in seconds.
|
129
136
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
130
137
|
# in the analytics logs when storage analytics logging is enabled.
|
138
|
+
# * +:location_mode+ - LocationMode. Specifies the location mode used to decide
|
139
|
+
# which location the request should be sent to.
|
140
|
+
# * +:lease_id+ - String. If specified, Get Container Metadata only succeeds if the container’s lease is
|
141
|
+
# active and matches this ID. If there is no active lease or the ID does not match, 412
|
142
|
+
# (Precondition Failed) is returned.
|
131
143
|
#
|
132
144
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691976.aspx
|
133
145
|
#
|
@@ -137,8 +149,11 @@ module Azure::Storage::Blob
|
|
137
149
|
query = { "comp" => "metadata" }
|
138
150
|
query["timeout"] = options[:timeout].to_s if options[:timeout]
|
139
151
|
|
152
|
+
headers = options[:lease_id] ? { "x-ms-lease-id" => options[:lease_id] } : {}
|
153
|
+
|
140
154
|
# Call
|
141
|
-
|
155
|
+
options[:request_location_mode] = Azure::Storage::RequestLocationMode::PRIMARY_OR_SECONDARY
|
156
|
+
response = call(:get, container_uri(name, query, options), nil, headers, options)
|
142
157
|
|
143
158
|
# result
|
144
159
|
container = Serialization.container_from_headers(response.headers)
|
@@ -160,6 +175,9 @@ module Azure::Storage::Blob
|
|
160
175
|
# * +:timeout+ - Integer. A timeout in seconds.
|
161
176
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
162
177
|
# in the analytics logs when storage analytics logging is enabled.
|
178
|
+
# * +:lease_id+ - String. If specified, Set Container Metadata only succeeds if the container’s lease is
|
179
|
+
# active and matches this ID. If there is no active lease or the ID does not match, 412
|
180
|
+
# (Precondition Failed) is returned.
|
163
181
|
#
|
164
182
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179362.aspx
|
165
183
|
#
|
@@ -172,6 +190,7 @@ module Azure::Storage::Blob
|
|
172
190
|
# Headers
|
173
191
|
headers = StorageService.common_headers
|
174
192
|
StorageService.add_metadata_to_headers(metadata, headers) if metadata
|
193
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
175
194
|
|
176
195
|
# Call
|
177
196
|
call(:put, container_uri(name, query), nil, headers, options)
|
@@ -194,6 +213,11 @@ module Azure::Storage::Blob
|
|
194
213
|
# * +:timeout+ - Integer. A timeout in seconds.
|
195
214
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
196
215
|
# in the analytics logs when storage analytics logging is enabled.
|
216
|
+
# * +:location_mode+ - LocationMode. Specifies the location mode used to decide
|
217
|
+
# which location the request should be sent to.
|
218
|
+
# * +:lease_id+ - String. If specified, Get Container ACL only succeeds if the container’s lease is
|
219
|
+
# active and matches this ID. If there is no active lease or the ID does not match, 412
|
220
|
+
# (Precondition Failed) is returned.
|
197
221
|
#
|
198
222
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179469.aspx
|
199
223
|
#
|
@@ -206,8 +230,11 @@ module Azure::Storage::Blob
|
|
206
230
|
query = { "comp" => "acl" }
|
207
231
|
query["timeout"] = options[:timeout].to_s if options[:timeout]
|
208
232
|
|
233
|
+
headers = options[:lease_id] ? { "x-ms-lease-id" => options[:lease_id] } : {}
|
234
|
+
|
209
235
|
# Call
|
210
|
-
|
236
|
+
options[:request_location_mode] = Azure::Storage::RequestLocationMode::PRIMARY_OR_SECONDARY
|
237
|
+
response = call(:get, container_uri(name, query, options), nil, headers, options)
|
211
238
|
|
212
239
|
# Result
|
213
240
|
container = Serialization.container_from_headers(response.headers)
|
@@ -234,6 +261,9 @@ module Azure::Storage::Blob
|
|
234
261
|
# * +:timeout+ - Integer. A timeout in seconds.
|
235
262
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
236
263
|
# in the analytics logs when storage analytics logging is enabled.
|
264
|
+
# * +:lease_id+ - String. If specified, Set Container ACL only succeeds if the container’s lease is
|
265
|
+
# active and matches this ID. If there is no active lease or the ID does not match, 412
|
266
|
+
# (Precondition Failed) is returned.
|
237
267
|
#
|
238
268
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179391.aspx
|
239
269
|
#
|
@@ -252,6 +282,7 @@ module Azure::Storage::Blob
|
|
252
282
|
# Headers + body
|
253
283
|
headers = StorageService.common_headers
|
254
284
|
headers["x-ms-blob-public-access"] = public_access_level if public_access_level && public_access_level.to_s.length > 0
|
285
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
255
286
|
|
256
287
|
signed_identifiers = nil
|
257
288
|
signed_identifiers = options[:signed_identifiers] if options[:signed_identifiers]
|
@@ -283,6 +314,11 @@ module Azure::Storage::Blob
|
|
283
314
|
# * +:timeout+ - Integer. A timeout in seconds.
|
284
315
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
285
316
|
# in the analytics logs when storage analytics logging is enabled.
|
317
|
+
# * +:lease_id+ - String. Required for version 2012-02-12 and newer if the container has an active lease. To call
|
318
|
+
# Delete Container on a container that has an active lease, specify the lease ID in this header.
|
319
|
+
# If this header is not specified when there is an active lease, Delete Container will return 409
|
320
|
+
# (Conflict). If you specify the wrong lease ID, or a lease ID on a container that does not have
|
321
|
+
# an active lease, Delete Container will return 412 (Precondition failed).
|
286
322
|
#
|
287
323
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179408.aspx
|
288
324
|
#
|
@@ -292,8 +328,10 @@ module Azure::Storage::Blob
|
|
292
328
|
query = {}
|
293
329
|
query["timeout"] = options[:timeout].to_s if options[:timeout]
|
294
330
|
|
331
|
+
headers = options[:lease_id] ? { "x-ms-lease-id" => options[:lease_id] } : {}
|
332
|
+
|
295
333
|
# Call
|
296
|
-
call(:delete, container_uri(name, query), nil,
|
334
|
+
call(:delete, container_uri(name, query), nil, headers, options)
|
297
335
|
|
298
336
|
# result
|
299
337
|
nil
|
@@ -329,6 +367,8 @@ module Azure::Storage::Blob
|
|
329
367
|
# * +:if_none_match+ - String. An ETag value. Specify an ETag value for this conditional header to acquire the lease
|
330
368
|
# only if the container's ETag value does not match the value specified. If the values are identical,
|
331
369
|
# the Blob service returns status code 412 (Precondition Failed).
|
370
|
+
# * +:origin+ - String. Optional. Specifies the origin from which the request is issued. The presence of this header results
|
371
|
+
# in cross-origin resource sharing headers on the response.
|
332
372
|
#
|
333
373
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691972.aspx
|
334
374
|
#
|
@@ -368,6 +408,8 @@ module Azure::Storage::Blob
|
|
368
408
|
# * +:if_none_match+ - String. An ETag value. Specify an ETag value for this conditional header to renew the lease
|
369
409
|
# only if the container's ETag value does not match the value specified. If the values are identical,
|
370
410
|
# the Blob service returns status code 412 (Precondition Failed).
|
411
|
+
# * +:origin+ - String. Optional. Specifies the origin from which the request is issued. The presence of this header results
|
412
|
+
# in cross-origin resource sharing headers on the response.
|
371
413
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691972.aspx
|
372
414
|
#
|
373
415
|
# Returns the renewed lease id
|
@@ -403,6 +445,8 @@ module Azure::Storage::Blob
|
|
403
445
|
# * +:if_none_match+ - String. An ETag value. Specify an ETag value for this conditional header to change the lease
|
404
446
|
# only if the container's ETag value does not match the value specified. If the values are identical,
|
405
447
|
# the Blob service returns status code 412 (Precondition Failed).
|
448
|
+
# * +:origin+ - String. Optional. Specifies the origin from which the request is issued. The presence of this header results
|
449
|
+
# in cross-origin resource sharing headers on the response.
|
406
450
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691972.aspx
|
407
451
|
#
|
408
452
|
# Returns the changed lease id
|
@@ -438,6 +482,8 @@ module Azure::Storage::Blob
|
|
438
482
|
# * +:if_none_match+ - String. An ETag value. Specify an ETag value for this conditional header to release the lease
|
439
483
|
# only if the container's ETag value does not match the value specified. If the values are identical,
|
440
484
|
# the Blob service returns status code 412 (Precondition Failed).
|
485
|
+
# * +:origin+ - String. Optional. Specifies the origin from which the request is issued. The presence of this header results
|
486
|
+
# in cross-origin resource sharing headers on the response.
|
441
487
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691972.aspx
|
442
488
|
#
|
443
489
|
# Returns nil on success
|
@@ -485,6 +531,8 @@ module Azure::Storage::Blob
|
|
485
531
|
# * +:if_none_match+ - String. An ETag value. Specify an ETag value for this conditional header to break the lease
|
486
532
|
# only if the container's ETag value does not match the value specified. If the values are identical,
|
487
533
|
# the Blob service returns status code 412 (Precondition Failed).
|
534
|
+
# * +:origin+ - String. Optional. Specifies the origin from which the request is issued. The presence of this header results
|
535
|
+
# in cross-origin resource sharing headers on the response.
|
488
536
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691972.aspx
|
489
537
|
#
|
490
538
|
# Returns an Integer of the remaining lease time. This value is the approximate time remaining in the lease
|
@@ -536,6 +584,8 @@ module Azure::Storage::Blob
|
|
536
584
|
# * +:timeout+ - Integer. A timeout in seconds.
|
537
585
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
538
586
|
# in the analytics logs when storage analytics logging is enabled.
|
587
|
+
# * +:location_mode+ - LocationMode. Specifies the location mode used to decide
|
588
|
+
# which location the request should be sent to.
|
539
589
|
#
|
540
590
|
# NOTE: Metadata requested with the :metadata parameter must have been stored in
|
541
591
|
# accordance with the naming restrictions imposed by the 2009-09-19 version of the Blob
|
@@ -567,7 +617,8 @@ module Azure::Storage::Blob
|
|
567
617
|
query["include"] = included_datasets.join "," if included_datasets.length > 0
|
568
618
|
|
569
619
|
# Scheme + path
|
570
|
-
|
620
|
+
options[:request_location_mode] = Azure::Storage::RequestLocationMode::PRIMARY_OR_SECONDARY
|
621
|
+
uri = container_uri(name, query, options)
|
571
622
|
|
572
623
|
# Call
|
573
624
|
response = call(:get, uri, nil, {}, options)
|
@@ -69,6 +69,8 @@ module Azure::Storage
|
|
69
69
|
# * +:if_none_match+ - String. An ETag value. Specify an ETag value for this conditional header to create a new blob
|
70
70
|
# only if the blob's ETag value does not match the value specified. If the values are identical,
|
71
71
|
# the Blob service returns status code 412 (Precondition Failed).
|
72
|
+
# * +:lease_id+ - String. Required if the blob has an active lease. To perform this operation on a blob with an active lease,
|
73
|
+
# specify the valid lease ID for this header.
|
72
74
|
#
|
73
75
|
# See http://msdn.microsoft.com/en-us/library/azure/dd179451.aspx
|
74
76
|
#
|
@@ -102,6 +104,7 @@ module Azure::Storage
|
|
102
104
|
|
103
105
|
StorageService.add_metadata_to_headers options[:metadata], headers
|
104
106
|
add_blob_conditional_headers options, headers
|
107
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
105
108
|
|
106
109
|
# call PutBlob with empty body
|
107
110
|
response = call(:put, uri, nil, headers, options)
|
@@ -150,6 +153,8 @@ module Azure::Storage
|
|
150
153
|
# * +:timeout+ - Integer. A timeout in seconds.
|
151
154
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
152
155
|
# in the analytics logs when storage analytics logging is enabled.
|
156
|
+
# * +:lease_id+ - String. Required if the blob has an active lease. To perform this operation on a blob with an active lease,
|
157
|
+
# specify the valid lease ID for this header.
|
153
158
|
#
|
154
159
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691975.aspx
|
155
160
|
#
|
@@ -166,6 +171,7 @@ module Azure::Storage
|
|
166
171
|
|
167
172
|
# clear default content type
|
168
173
|
StorageService.with_header headers, "Content-Type", ""
|
174
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
169
175
|
|
170
176
|
# set optional headers
|
171
177
|
unless options.empty?
|
@@ -257,7 +263,9 @@ module Azure::Storage
|
|
257
263
|
# * +:timeout+ - Integer. A timeout in seconds.
|
258
264
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
259
265
|
# in the analytics logs when storage analytics logging is enabled.
|
260
|
-
# * +:
|
266
|
+
# * +:location_mode+ - LocationMode. Specifies the location mode used to decide
|
267
|
+
# which location the request should be sent to.
|
268
|
+
# * +:if_modified_since+ - String. A DateTime value. Specify this conditional header to list the pages only if
|
261
269
|
# the blob has been modified since the specified date/time. If the blob has not been modified,
|
262
270
|
# the Blob service returns status code 412 (Precondition Failed).
|
263
271
|
# * +:if_unmodified_since+ - String. A DateTime value. Specify this conditional header to list the pages only if
|
@@ -273,6 +281,12 @@ module Azure::Storage
|
|
273
281
|
# were changed between target blob and previous snapshot. Changed pages include both updated and
|
274
282
|
# cleared pages. The target blob may be a snapshot, as long as the snapshot specified by this
|
275
283
|
# is the older of the two.
|
284
|
+
# * +:lease_id+ - String. If this header is specified, the operation will be performed only if both of the
|
285
|
+
# following conditions are met:
|
286
|
+
# - The blob's lease is currently active.
|
287
|
+
# - The lease ID specified in the request matches that of the blob.
|
288
|
+
# If this header is specified and both of these conditions are not met, the request will fail
|
289
|
+
# and the Get Blob operation will fail with status code 412 (Precondition Failed).
|
276
290
|
#
|
277
291
|
# See http://msdn.microsoft.com/en-us/library/azure/ee691973.aspx
|
278
292
|
#
|
@@ -286,13 +300,15 @@ module Azure::Storage
|
|
286
300
|
query.update("prevsnapshot" => options[:previous_snapshot]) if options[:previous_snapshot]
|
287
301
|
StorageService.with_query query, "timeout", options[:timeout].to_s if options[:timeout]
|
288
302
|
|
289
|
-
|
303
|
+
options[:request_location_mode] = RequestLocationMode::PRIMARY_OR_SECONDARY
|
304
|
+
uri = blob_uri(container, blob, query, options)
|
290
305
|
|
291
306
|
options[:start_range] = 0 if options[:end_range] && (not options[:start_range])
|
292
307
|
|
293
308
|
headers = StorageService.common_headers
|
294
309
|
StorageService.with_header headers, "x-ms-range", "bytes=#{options[:start_range]}-#{options[:end_range]}" if options[:start_range]
|
295
310
|
add_blob_conditional_headers options, headers
|
311
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
296
312
|
|
297
313
|
response = call(:get, uri, nil, headers, options)
|
298
314
|
|
@@ -384,6 +400,12 @@ module Azure::Storage
|
|
384
400
|
# * +:timeout+ - Integer. A timeout in seconds.
|
385
401
|
# * +:request_id+ - String. Provides a client-generated, opaque value with a 1 KB character limit that is recorded
|
386
402
|
# in the analytics logs when storage analytics logging is enabled.
|
403
|
+
# * +:lease_id+ - String. If this header is specified, the operation will be performed only if both of the
|
404
|
+
# following conditions are met:
|
405
|
+
# - The blob's lease is currently active.
|
406
|
+
# - The lease ID specified in the request matches that of the blob.
|
407
|
+
# If this header is specified and both of these conditions are not met, the request will fail
|
408
|
+
# and the Snapshot Blob operation will fail with status code 412 (Precondition Failed).
|
387
409
|
#
|
388
410
|
# See https://docs.microsoft.com/en-us/rest/api/storageservices/incremental-copy-blob
|
389
411
|
#
|
@@ -408,6 +430,7 @@ module Azure::Storage
|
|
408
430
|
unless options.empty?
|
409
431
|
add_blob_conditional_headers options, headers
|
410
432
|
StorageService.add_metadata_to_headers options[:metadata], headers
|
433
|
+
headers["x-ms-lease-id"] = options[:lease_id] if options[:lease_id]
|
411
434
|
end
|
412
435
|
|
413
436
|
response = call(:put, uri, nil, headers, options)
|
data/lib/azure/storage/client.rb
CHANGED
@@ -56,7 +56,7 @@ module Azure::Storage
|
|
56
56
|
# * +:storage_connection_string+ - String. The storage connection string.
|
57
57
|
# * +:storage_account_name+ - String. The name of the storage account.
|
58
58
|
# * +:storage_access_key+ - Base64 String. The access key of the storage account.
|
59
|
-
# * +:storage_sas_token+ - String. The signed access
|
59
|
+
# * +:storage_sas_token+ - String. The signed access signature for the storage account or one of its service.
|
60
60
|
# * +:storage_blob_host+ - String. Specified Blob serivce endpoint or hostname
|
61
61
|
# * +:storage_table_host+ - String. Specified Table serivce endpoint or hostname
|
62
62
|
# * +:storage_queue_host+ - String. Specified Queue serivce endpoint or hostname
|
@@ -66,7 +66,7 @@ module Azure::Storage
|
|
66
66
|
# * +:ca_file+ - String. File path of the CA file if having issue with SSL
|
67
67
|
# * +:user_agent_prefix+ - String. The user agent prefix that can identify the application calls the library
|
68
68
|
#
|
69
|
-
# The valid set of options
|
69
|
+
# The valid set of options include:
|
70
70
|
# * Storage Emulator: +:use_development_storage+ required, +:development_storage_proxy_uri+ optionally
|
71
71
|
# * Storage account name and key: +:storage_account_name+ and +:storage_access_key+ required, set +:storage_dns_suffix+ necessarily
|
72
72
|
# * Storage account name and SAS token: +:storage_account_name+ and +:storage_sas_token+ required, set +:storage_dns_suffix+ necessarily
|
@@ -87,7 +87,7 @@ module Azure::Storage
|
|
87
87
|
Azure::Storage::Service::StorageService.user_agent_prefix = options[:user_agent_prefix]
|
88
88
|
options.delete :user_agent_prefix
|
89
89
|
end
|
90
|
-
Azure::Storage::Service::StorageService.register_request_callback
|
90
|
+
Azure::Storage::Service::StorageService.register_request_callback(&block) if block_given?
|
91
91
|
reset!(options)
|
92
92
|
end
|
93
93
|
|
@@ -130,17 +130,17 @@ module Azure::Storage
|
|
130
130
|
# * +:development_storage_proxy_uri+ - String. Used with +:use_development_storage+ if emulator is hosted other than localhost.
|
131
131
|
# * +:storage_account_name+ - String. The name of the storage account.
|
132
132
|
# * +:storage_access_key+ - Base64 String. The access key of the storage account.
|
133
|
-
# * +:storage_sas_token+ - String. The signed access
|
134
|
-
# * +:storage_blob_host+ - String. Specified Blob
|
135
|
-
# * +:storage_table_host+ - String. Specified Table
|
136
|
-
# * +:storage_queue_host+ - String. Specified Queue
|
137
|
-
# * +:storage_dns_suffix+ - String. The suffix of a regional Storage
|
133
|
+
# * +:storage_sas_token+ - String. The signed access signature for the storage account or one of its service.
|
134
|
+
# * +:storage_blob_host+ - String. Specified Blob service endpoint or hostname
|
135
|
+
# * +:storage_table_host+ - String. Specified Table service endpoint or hostname
|
136
|
+
# * +:storage_queue_host+ - String. Specified Queue service endpoint or hostname
|
137
|
+
# * +:storage_dns_suffix+ - String. The suffix of a regional Storage Service, to
|
138
138
|
# * +:default_endpoints_protocol+ - String. http or https
|
139
139
|
# * +:use_path_style_uri+ - String. Whether use path style URI for specified endpoints
|
140
140
|
# * +:ca_file+ - String. File path of the CA file if having issue with SSL
|
141
141
|
# * +:user_agent_prefix+ - String. The user agent prefix that can identify the application calls the library
|
142
142
|
#
|
143
|
-
# The valid set of options
|
143
|
+
# The valid set of options include:
|
144
144
|
# * Storage Emulator: +:use_development_storage+ required, +:development_storage_proxy_uri+ optionally
|
145
145
|
# * Storage account name and key: +:storage_account_name+ and +:storage_access_key+ required, set +:storage_dns_suffix+ necessarily
|
146
146
|
# * Storage account name and SAS token: +:storage_account_name+ and +:storage_sas_token+ required, set +:storage_dns_suffix+ necessarily
|
@@ -176,7 +176,7 @@ module Azure::Storage
|
|
176
176
|
#
|
177
177
|
# @return [Azure::Storage::Client]
|
178
178
|
def create_from_env(&block)
|
179
|
-
create
|
179
|
+
create(&block)
|
180
180
|
end
|
181
181
|
|
182
182
|
# Public: Creates an instance of [Azure::Storage::Client] from Environment Variables
|
@@ -26,6 +26,7 @@
|
|
26
26
|
|
27
27
|
require "uri"
|
28
28
|
require "azure/storage/client_options_error"
|
29
|
+
require "azure/storage/core/auth/anonymous_signer"
|
29
30
|
|
30
31
|
module Azure::Storage
|
31
32
|
module ClientOptions
|
@@ -46,7 +47,7 @@ module Azure::Storage
|
|
46
47
|
# * +:storage_connection_string+ - String. The storage connection string.
|
47
48
|
# * +:storage_account_name+ - String. The name of the storage account.
|
48
49
|
# * +:storage_access_key+ - Base64 String. The access key of the storage account.
|
49
|
-
# * +:storage_sas_token+ - String. The signed access
|
50
|
+
# * +:storage_sas_token+ - String. The signed access signature for the storage account or one of its service.
|
50
51
|
# * +:storage_blob_host+ - String. Specified Blob serivce endpoint or hostname
|
51
52
|
# * +:storage_table_host+ - String. Specified Table serivce endpoint or hostname
|
52
53
|
# * +:storage_queue_host+ - String. Specified Queue serivce endpoint or hostname
|
@@ -55,7 +56,7 @@ module Azure::Storage
|
|
55
56
|
# * +:use_path_style_uri+ - String. Whether use path style URI for specified endpoints
|
56
57
|
# * +:ca_file+ - String. File path of the CA file if having issue with SSL
|
57
58
|
#
|
58
|
-
# The valid set of options
|
59
|
+
# The valid set of options include:
|
59
60
|
# * Storage Emulator: +:use_development_storage+ required, +:development_storage_proxy_uri+ optionally
|
60
61
|
# * Storage account name and key: +:storage_account_name+ and +:storage_access_key+ required, set +:storage_dns_suffix+ necessarily
|
61
62
|
# * Storage account name and SAS token: +:storage_account_name+ and +:storage_sas_token+ required, set +:storage_dns_suffix+ necessarily
|
@@ -74,7 +75,7 @@ module Azure::Storage
|
|
74
75
|
if options.is_a? String
|
75
76
|
options = parse_connection_string(options)
|
76
77
|
elsif options.is_a? Hash
|
77
|
-
# When the options are provided via
|
78
|
+
# When the options are provided via singleton setup: Azure::Storage.setup()
|
78
79
|
options = setup_options if options.length == 0
|
79
80
|
|
80
81
|
options = parse_connection_string(options[:storage_connection_string]) if options[:storage_connection_string]
|
@@ -235,6 +236,8 @@ module Azure::Storage
|
|
235
236
|
optional: [:use_path_style_uri, :default_endpoints_protocol, :storage_sas_token])
|
236
237
|
results[:use_path_style_uri] = results.key?(:use_path_style_uri)
|
237
238
|
normalize_hosts(results)
|
239
|
+
# Adds anonymous signer if no sas token
|
240
|
+
results[:signer] = Azure::Storage::Core::Auth::AnonymousSigner.new unless results.key?(:storage_sas_token)
|
238
241
|
return results
|
239
242
|
rescue InvalidOptionsError => e
|
240
243
|
end
|