google-cloud-storage 0.20.2 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/google-cloud-storage.rb +3 -14
- data/lib/google/cloud/storage.rb +97 -61
- data/lib/google/cloud/storage/bucket.rb +120 -55
- data/lib/google/cloud/storage/bucket/acl.rb +65 -99
- data/lib/google/cloud/storage/bucket/cors.rb +4 -6
- data/lib/google/cloud/storage/bucket/list.rb +10 -15
- data/lib/google/cloud/storage/file.rb +48 -54
- data/lib/google/cloud/storage/file/acl.rb +31 -48
- data/lib/google/cloud/storage/file/list.rb +10 -15
- data/lib/google/cloud/storage/project.rb +29 -29
- data/lib/google/cloud/storage/service.rb +1 -2
- data/lib/google/cloud/storage/version.rb +1 -1
- metadata +5 -5
@@ -37,10 +37,9 @@ module Google
|
|
37
37
|
# and Techniques
|
38
38
|
#
|
39
39
|
# @example
|
40
|
-
# require "google/cloud"
|
40
|
+
# require "google/cloud/storage"
|
41
41
|
#
|
42
|
-
#
|
43
|
-
# storage = gcloud.storage
|
42
|
+
# storage = Google::Cloud::Storage.new
|
44
43
|
#
|
45
44
|
# bucket = storage.bucket "my-bucket"
|
46
45
|
#
|
@@ -276,10 +275,9 @@ module Google
|
|
276
275
|
# @yield [file] a block yielding a delegate object for updating the file
|
277
276
|
#
|
278
277
|
# @example
|
279
|
-
# require "google/cloud"
|
278
|
+
# require "google/cloud/storage"
|
280
279
|
#
|
281
|
-
#
|
282
|
-
# storage = gcloud.storage
|
280
|
+
# storage = Google::Cloud::Storage.new
|
283
281
|
#
|
284
282
|
# bucket = storage.bucket "my-bucket"
|
285
283
|
#
|
@@ -336,10 +334,9 @@ module Google
|
|
336
334
|
# @return [File] Returns a `::File` object on the local file system
|
337
335
|
#
|
338
336
|
# @example
|
339
|
-
# require "google/cloud"
|
337
|
+
# require "google/cloud/storage"
|
340
338
|
#
|
341
|
-
#
|
342
|
-
# storage = gcloud.storage
|
339
|
+
# storage = Google::Cloud::Storage.new
|
343
340
|
#
|
344
341
|
# bucket = storage.bucket "my-bucket"
|
345
342
|
#
|
@@ -347,10 +344,9 @@ module Google
|
|
347
344
|
# file.download "path/to/downloaded/file.ext"
|
348
345
|
#
|
349
346
|
# @example Use the CRC32c digest by passing :crc32c.
|
350
|
-
# require "google/cloud"
|
347
|
+
# require "google/cloud/storage"
|
351
348
|
#
|
352
|
-
#
|
353
|
-
# storage = gcloud.storage
|
349
|
+
# storage = Google::Cloud::Storage.new
|
354
350
|
#
|
355
351
|
# bucket = storage.bucket "my-bucket"
|
356
352
|
#
|
@@ -358,10 +354,9 @@ module Google
|
|
358
354
|
# file.download "path/to/downloaded/file.ext", verify: :crc32c
|
359
355
|
#
|
360
356
|
# @example Use the MD5 and CRC32c digests by passing :all.
|
361
|
-
# require "google/cloud"
|
357
|
+
# require "google/cloud/storage"
|
362
358
|
#
|
363
|
-
#
|
364
|
-
# storage = gcloud.storage
|
359
|
+
# storage = Google::Cloud::Storage.new
|
365
360
|
#
|
366
361
|
# bucket = storage.bucket "my-bucket"
|
367
362
|
#
|
@@ -369,10 +364,9 @@ module Google
|
|
369
364
|
# file.download "path/to/downloaded/file.ext", verify: :all
|
370
365
|
#
|
371
366
|
# @example Disable the download verification by passing :none.
|
372
|
-
# require "google/cloud"
|
367
|
+
# require "google/cloud/storage"
|
373
368
|
#
|
374
|
-
#
|
375
|
-
# storage = gcloud.storage
|
369
|
+
# storage = Google::Cloud::Storage.new
|
376
370
|
#
|
377
371
|
# bucket = storage.bucket "my-bucket"
|
378
372
|
#
|
@@ -433,10 +427,9 @@ module Google
|
|
433
427
|
# @return [Google::Cloud::Storage::File]
|
434
428
|
#
|
435
429
|
# @example The file can be copied to a new path in the current bucket:
|
436
|
-
# require "google/cloud"
|
430
|
+
# require "google/cloud/storage"
|
437
431
|
#
|
438
|
-
#
|
439
|
-
# storage = gcloud.storage
|
432
|
+
# storage = Google::Cloud::Storage.new
|
440
433
|
#
|
441
434
|
# bucket = storage.bucket "my-bucket"
|
442
435
|
#
|
@@ -444,10 +437,9 @@ module Google
|
|
444
437
|
# file.copy "path/to/destination/file.ext"
|
445
438
|
#
|
446
439
|
# @example The file can also be copied to a different bucket:
|
447
|
-
# require "google/cloud"
|
440
|
+
# require "google/cloud/storage"
|
448
441
|
#
|
449
|
-
#
|
450
|
-
# storage = gcloud.storage
|
442
|
+
# storage = Google::Cloud::Storage.new
|
451
443
|
#
|
452
444
|
# bucket = storage.bucket "my-bucket"
|
453
445
|
#
|
@@ -479,10 +471,9 @@ module Google
|
|
479
471
|
# @return [Boolean] Returns `true` if the file was deleted.
|
480
472
|
#
|
481
473
|
# @example
|
482
|
-
# require "google/cloud"
|
474
|
+
# require "google/cloud/storage"
|
483
475
|
#
|
484
|
-
#
|
485
|
-
# storage = gcloud.storage
|
476
|
+
# storage = Google::Cloud::Storage.new
|
486
477
|
#
|
487
478
|
# bucket = storage.bucket "my-bucket"
|
488
479
|
#
|
@@ -508,20 +499,18 @@ module Google
|
|
508
499
|
# `HTTPS`.
|
509
500
|
#
|
510
501
|
# @example
|
511
|
-
# require "google/cloud"
|
502
|
+
# require "google/cloud/storage"
|
512
503
|
#
|
513
|
-
#
|
514
|
-
# storage = gcloud.storage
|
504
|
+
# storage = Google::Cloud::Storage.new
|
515
505
|
#
|
516
506
|
# bucket = storage.bucket "my-todo-app"
|
517
507
|
# file = bucket.file "avatars/heidi/400x400.png"
|
518
508
|
# public_url = file.public_url
|
519
509
|
#
|
520
510
|
# @example Generate the URL with a protocol other than HTTPS:
|
521
|
-
# require "google/cloud"
|
511
|
+
# require "google/cloud/storage"
|
522
512
|
#
|
523
|
-
#
|
524
|
-
# storage = gcloud.storage
|
513
|
+
# storage = Google::Cloud::Storage.new
|
525
514
|
#
|
526
515
|
# bucket = storage.bucket "my-todo-app"
|
527
516
|
# file = bucket.file "avatars/heidi/400x400.png"
|
@@ -571,20 +560,18 @@ module Google
|
|
571
560
|
# Private Key.
|
572
561
|
#
|
573
562
|
# @example
|
574
|
-
# require "google/cloud"
|
563
|
+
# require "google/cloud/storage"
|
575
564
|
#
|
576
|
-
#
|
577
|
-
# storage = gcloud.storage
|
565
|
+
# storage = Google::Cloud::Storage.new
|
578
566
|
#
|
579
567
|
# bucket = storage.bucket "my-todo-app"
|
580
568
|
# file = bucket.file "avatars/heidi/400x400.png"
|
581
569
|
# shared_url = file.signed_url
|
582
570
|
#
|
583
571
|
# @example Any of the option parameters may be specified:
|
584
|
-
# require "google/cloud"
|
572
|
+
# require "google/cloud/storage"
|
585
573
|
#
|
586
|
-
#
|
587
|
-
# storage = gcloud.storage
|
574
|
+
# storage = Google::Cloud::Storage.new
|
588
575
|
#
|
589
576
|
# bucket = storage.bucket "my-todo-app"
|
590
577
|
# file = bucket.file "avatars/heidi/400x400.png"
|
@@ -610,7 +597,7 @@ module Google
|
|
610
597
|
content_type: content_type, content_md5: content_md5,
|
611
598
|
issuer: issuer, client_email: client_email,
|
612
599
|
signing_key: signing_key, private_key: private_key }
|
613
|
-
signer = File::Signer.
|
600
|
+
signer = File::Signer.from_file self
|
614
601
|
signer.signed_url options
|
615
602
|
end
|
616
603
|
|
@@ -625,10 +612,9 @@ module Google
|
|
625
612
|
# Control guide
|
626
613
|
#
|
627
614
|
# @example Grant access to a user by prepending `"user-"` to an email:
|
628
|
-
# require "google/cloud"
|
615
|
+
# require "google/cloud/storage"
|
629
616
|
#
|
630
|
-
#
|
631
|
-
# storage = gcloud.storage
|
617
|
+
# storage = Google::Cloud::Storage.new
|
632
618
|
#
|
633
619
|
# bucket = storage.bucket "my-todo-app"
|
634
620
|
# file = bucket.file "avatars/heidi/400x400.png"
|
@@ -637,10 +623,9 @@ module Google
|
|
637
623
|
# file.acl.add_reader "user-#{email}"
|
638
624
|
#
|
639
625
|
# @example Grant access to a group by prepending `"group-"` to an email:
|
640
|
-
# require "google/cloud"
|
626
|
+
# require "google/cloud/storage"
|
641
627
|
#
|
642
|
-
#
|
643
|
-
# storage = gcloud.storage
|
628
|
+
# storage = Google::Cloud::Storage.new
|
644
629
|
#
|
645
630
|
# bucket = storage.bucket "my-todo-app"
|
646
631
|
# file = bucket.file "avatars/heidi/400x400.png"
|
@@ -649,10 +634,9 @@ module Google
|
|
649
634
|
# file.acl.add_reader "group-#{email}"
|
650
635
|
#
|
651
636
|
# @example Or, grant access via a predefined permissions list:
|
652
|
-
# require "google/cloud"
|
637
|
+
# require "google/cloud/storage"
|
653
638
|
#
|
654
|
-
#
|
655
|
-
# storage = gcloud.storage
|
639
|
+
# storage = Google::Cloud::Storage.new
|
656
640
|
#
|
657
641
|
# bucket = storage.bucket "my-todo-app"
|
658
642
|
# file = bucket.file "avatars/heidi/400x400.png"
|
@@ -731,14 +715,24 @@ module Google
|
|
731
715
|
##
|
732
716
|
# @private Create a signed_url for a file.
|
733
717
|
class Signer
|
734
|
-
def initialize
|
735
|
-
@
|
718
|
+
def initialize bucket, path, service
|
719
|
+
@bucket = bucket
|
720
|
+
@path = path
|
721
|
+
@service = service
|
722
|
+
end
|
723
|
+
|
724
|
+
def self.from_file file
|
725
|
+
new file.bucket, file.name, file.service
|
726
|
+
end
|
727
|
+
|
728
|
+
def self.from_bucket bucket, path
|
729
|
+
new bucket.name, path, bucket.service
|
736
730
|
end
|
737
731
|
|
738
732
|
##
|
739
733
|
# The external path to the file.
|
740
734
|
def ext_path
|
741
|
-
URI.escape "/#{@
|
735
|
+
URI.escape "/#{@bucket}/#{@path}"
|
742
736
|
end
|
743
737
|
|
744
738
|
##
|
@@ -762,12 +756,12 @@ module Google
|
|
762
756
|
|
763
757
|
def determine_signing_key options = {}
|
764
758
|
options[:signing_key] || options[:private_key] ||
|
765
|
-
@
|
759
|
+
@service.credentials.signing_key
|
766
760
|
end
|
767
761
|
|
768
762
|
def determine_issuer options = {}
|
769
763
|
options[:issuer] || options[:client_email] ||
|
770
|
-
@
|
764
|
+
@service.credentials.issuer
|
771
765
|
end
|
772
766
|
|
773
767
|
def signed_url options
|
@@ -23,10 +23,9 @@ module Google
|
|
23
23
|
# Represents a File's Access Control List.
|
24
24
|
#
|
25
25
|
# @example
|
26
|
-
# require "google/cloud"
|
26
|
+
# require "google/cloud/storage"
|
27
27
|
#
|
28
|
-
#
|
29
|
-
# storage = gcloud.storage
|
28
|
+
# storage = Google::Cloud::Storage.new
|
30
29
|
#
|
31
30
|
# bucket = storage.bucket "my-bucket"
|
32
31
|
#
|
@@ -66,10 +65,9 @@ module Google
|
|
66
65
|
# Reloads all Access Control List data for the file.
|
67
66
|
#
|
68
67
|
# @example
|
69
|
-
# require "google/cloud"
|
68
|
+
# require "google/cloud/storage"
|
70
69
|
#
|
71
|
-
#
|
72
|
-
# storage = gcloud.storage
|
70
|
+
# storage = Google::Cloud::Storage.new
|
73
71
|
#
|
74
72
|
# bucket = storage.bucket "my-bucket"
|
75
73
|
#
|
@@ -79,9 +77,7 @@ module Google
|
|
79
77
|
def reload!
|
80
78
|
gapi = @service.list_file_acls @bucket, @file
|
81
79
|
acls = Array(gapi.items).map do |acl|
|
82
|
-
if acl.is_a? Google::Apis::StorageV1::ObjectAccessControl
|
83
|
-
return acl
|
84
|
-
end
|
80
|
+
next acl if acl.is_a? Google::Apis::StorageV1::ObjectAccessControl
|
85
81
|
fail "Unknown ACL format: #{acl.class}" unless acl.is_a? Hash
|
86
82
|
Google::Apis::StorageV1::ObjectAccessControl.from_json acl.to_json
|
87
83
|
end
|
@@ -96,10 +92,9 @@ module Google
|
|
96
92
|
# @return [Array<String>]
|
97
93
|
#
|
98
94
|
# @example
|
99
|
-
# require "google/cloud"
|
95
|
+
# require "google/cloud/storage"
|
100
96
|
#
|
101
|
-
#
|
102
|
-
# storage = gcloud.storage
|
97
|
+
# storage = Google::Cloud::Storage.new
|
103
98
|
#
|
104
99
|
# bucket = storage.bucket "my-bucket"
|
105
100
|
#
|
@@ -117,10 +112,9 @@ module Google
|
|
117
112
|
# @return [Array<String>]
|
118
113
|
#
|
119
114
|
# @example
|
120
|
-
# require "google/cloud"
|
115
|
+
# require "google/cloud/storage"
|
121
116
|
#
|
122
|
-
#
|
123
|
-
# storage = gcloud.storage
|
117
|
+
# storage = Google::Cloud::Storage.new
|
124
118
|
#
|
125
119
|
# bucket = storage.bucket "my-bucket"
|
126
120
|
#
|
@@ -151,10 +145,9 @@ module Google
|
|
151
145
|
# revision of this object. Default is the latest version.
|
152
146
|
#
|
153
147
|
# @example Grant access to a user by prepending `"user-"` to an email:
|
154
|
-
# require "google/cloud"
|
148
|
+
# require "google/cloud/storage"
|
155
149
|
#
|
156
|
-
#
|
157
|
-
# storage = gcloud.storage
|
150
|
+
# storage = Google::Cloud::Storage.new
|
158
151
|
#
|
159
152
|
# bucket = storage.bucket "my-bucket"
|
160
153
|
#
|
@@ -163,10 +156,9 @@ module Google
|
|
163
156
|
# file.acl.add_owner "user-#{email}"
|
164
157
|
#
|
165
158
|
# @example Grant access to a group by prepending `"group-"` to email:
|
166
|
-
# require "google/cloud"
|
159
|
+
# require "google/cloud/storage"
|
167
160
|
#
|
168
|
-
#
|
169
|
-
# storage = gcloud.storage
|
161
|
+
# storage = Google::Cloud::Storage.new
|
170
162
|
#
|
171
163
|
# bucket = storage.bucket "my-bucket"
|
172
164
|
#
|
@@ -202,10 +194,9 @@ module Google
|
|
202
194
|
# revision of this object. Default is the latest version.
|
203
195
|
#
|
204
196
|
# @example Grant access to a user by prepending `"user-"` to an email:
|
205
|
-
# require "google/cloud"
|
197
|
+
# require "google/cloud/storage"
|
206
198
|
#
|
207
|
-
#
|
208
|
-
# storage = gcloud.storage
|
199
|
+
# storage = Google::Cloud::Storage.new
|
209
200
|
#
|
210
201
|
# bucket = storage.bucket "my-bucket"
|
211
202
|
#
|
@@ -214,10 +205,9 @@ module Google
|
|
214
205
|
# file.acl.add_reader "user-#{email}"
|
215
206
|
#
|
216
207
|
# @example Grant access to a group by prepending `"group-"` to email:
|
217
|
-
# require "google/cloud"
|
208
|
+
# require "google/cloud/storage"
|
218
209
|
#
|
219
|
-
#
|
220
|
-
# storage = gcloud.storage
|
210
|
+
# storage = Google::Cloud::Storage.new
|
221
211
|
#
|
222
212
|
# bucket = storage.bucket "my-bucket"
|
223
213
|
#
|
@@ -253,10 +243,9 @@ module Google
|
|
253
243
|
# revision of this object. Default is the latest version.
|
254
244
|
#
|
255
245
|
# @example
|
256
|
-
# require "google/cloud"
|
246
|
+
# require "google/cloud/storage"
|
257
247
|
#
|
258
|
-
#
|
259
|
-
# storage = gcloud.storage
|
248
|
+
# storage = Google::Cloud::Storage.new
|
260
249
|
#
|
261
250
|
# bucket = storage.bucket "my-bucket"
|
262
251
|
#
|
@@ -284,10 +273,9 @@ module Google
|
|
284
273
|
# rule to the file.
|
285
274
|
#
|
286
275
|
# @example
|
287
|
-
# require "google/cloud"
|
276
|
+
# require "google/cloud/storage"
|
288
277
|
#
|
289
|
-
#
|
290
|
-
# storage = gcloud.storage
|
278
|
+
# storage = Google::Cloud::Storage.new
|
291
279
|
#
|
292
280
|
# bucket = storage.bucket "my-bucket"
|
293
281
|
#
|
@@ -307,10 +295,9 @@ module Google
|
|
307
295
|
# ACL rule to the file.
|
308
296
|
#
|
309
297
|
# @example
|
310
|
-
# require "google/cloud"
|
298
|
+
# require "google/cloud/storage"
|
311
299
|
#
|
312
|
-
#
|
313
|
-
# storage = gcloud.storage
|
300
|
+
# storage = Google::Cloud::Storage.new
|
314
301
|
#
|
315
302
|
# bucket = storage.bucket "my-bucket"
|
316
303
|
#
|
@@ -327,10 +314,9 @@ module Google
|
|
327
314
|
# rule to the file.
|
328
315
|
#
|
329
316
|
# @example
|
330
|
-
# require "google/cloud"
|
317
|
+
# require "google/cloud/storage"
|
331
318
|
#
|
332
|
-
#
|
333
|
-
# storage = gcloud.storage
|
319
|
+
# storage = Google::Cloud::Storage.new
|
334
320
|
#
|
335
321
|
# bucket = storage.bucket "my-bucket"
|
336
322
|
#
|
@@ -347,10 +333,9 @@ module Google
|
|
347
333
|
# rule to the file.
|
348
334
|
#
|
349
335
|
# @example
|
350
|
-
# require "google/cloud"
|
336
|
+
# require "google/cloud/storage"
|
351
337
|
#
|
352
|
-
#
|
353
|
-
# storage = gcloud.storage
|
338
|
+
# storage = Google::Cloud::Storage.new
|
354
339
|
#
|
355
340
|
# bucket = storage.bucket "my-bucket"
|
356
341
|
#
|
@@ -366,10 +351,9 @@ module Google
|
|
366
351
|
# rule to the file.
|
367
352
|
#
|
368
353
|
# @example
|
369
|
-
# require "google/cloud"
|
354
|
+
# require "google/cloud/storage"
|
370
355
|
#
|
371
|
-
#
|
372
|
-
# storage = gcloud.storage
|
356
|
+
# storage = Google::Cloud::Storage.new
|
373
357
|
#
|
374
358
|
# bucket = storage.bucket "my-bucket"
|
375
359
|
#
|
@@ -386,10 +370,9 @@ module Google
|
|
386
370
|
# rule to the file.
|
387
371
|
#
|
388
372
|
# @example
|
389
|
-
# require "google/cloud"
|
373
|
+
# require "google/cloud/storage"
|
390
374
|
#
|
391
|
-
#
|
392
|
-
# storage = gcloud.storage
|
375
|
+
# storage = Google::Cloud::Storage.new
|
393
376
|
#
|
394
377
|
# bucket = storage.bucket "my-bucket"
|
395
378
|
#
|
@@ -44,10 +44,9 @@ module Google
|
|
44
44
|
# @return [Boolean]
|
45
45
|
#
|
46
46
|
# @example
|
47
|
-
# require "google/cloud"
|
47
|
+
# require "google/cloud/storage"
|
48
48
|
#
|
49
|
-
#
|
50
|
-
# storage = gcloud.storage
|
49
|
+
# storage = Google::Cloud::Storage.new
|
51
50
|
#
|
52
51
|
# bucket = storage.bucket "my-bucket"
|
53
52
|
# files = bucket.files
|
@@ -65,10 +64,9 @@ module Google
|
|
65
64
|
# @return [File::List]
|
66
65
|
#
|
67
66
|
# @example
|
68
|
-
# require "google/cloud"
|
67
|
+
# require "google/cloud/storage"
|
69
68
|
#
|
70
|
-
#
|
71
|
-
# storage = gcloud.storage
|
69
|
+
# storage = Google::Cloud::Storage.new
|
72
70
|
#
|
73
71
|
# bucket = storage.bucket "my-bucket"
|
74
72
|
# files = bucket.files
|
@@ -107,10 +105,9 @@ module Google
|
|
107
105
|
# @return [Enumerator]
|
108
106
|
#
|
109
107
|
# @example Iterating each file by passing a block:
|
110
|
-
# require "google/cloud"
|
108
|
+
# require "google/cloud/storage"
|
111
109
|
#
|
112
|
-
#
|
113
|
-
# storage = gcloud.storage
|
110
|
+
# storage = Google::Cloud::Storage.new
|
114
111
|
#
|
115
112
|
# bucket = storage.bucket "my-bucket"
|
116
113
|
# files = bucket.files
|
@@ -119,10 +116,9 @@ module Google
|
|
119
116
|
# end
|
120
117
|
#
|
121
118
|
# @example Using the enumerator by not passing a block:
|
122
|
-
# require "google/cloud"
|
119
|
+
# require "google/cloud/storage"
|
123
120
|
#
|
124
|
-
#
|
125
|
-
# storage = gcloud.storage
|
121
|
+
# storage = Google::Cloud::Storage.new
|
126
122
|
#
|
127
123
|
# bucket = storage.bucket "my-bucket"
|
128
124
|
# files = bucket.files
|
@@ -132,10 +128,9 @@ module Google
|
|
132
128
|
# end
|
133
129
|
#
|
134
130
|
# @example Limit the number of API calls made:
|
135
|
-
# require "google/cloud"
|
131
|
+
# require "google/cloud/storage"
|
136
132
|
#
|
137
|
-
#
|
138
|
-
# storage = gcloud.storage
|
133
|
+
# storage = Google::Cloud::Storage.new
|
139
134
|
#
|
140
135
|
# bucket = storage.bucket "my-bucket"
|
141
136
|
# files = bucket.files
|