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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dacd357f4e4020c18e891b3cf1952236b612f95f
4
- data.tar.gz: b3add45394ea994cb45a84cd9f9da8d4e28daf81
3
+ metadata.gz: 94a9b4984ad82c331f96b286defb5fe25cebce12
4
+ data.tar.gz: 7ed68558c6cb0db8cd0b431657607219482aa056
5
5
  SHA512:
6
- metadata.gz: fb5b20e2f5e6e07ddc10dbb582209c783404072fa98107e69bbc4af4eb5c93fdbd7e5bc080c54feb6e2c8ac812e1d27dd39233e80e116962f7852acaaea9a0d8
7
- data.tar.gz: 6426d6e45323407820f5bfacc9e8f03fdd7fa5eb6f7a425f683d06c78991272dc824641cec7e01423895aeeb25a998f759d97fb6d26022bf0bcd1c49562bb072
6
+ metadata.gz: 4361659e81aebc49a2c29e3ac77339835a1e893b0e4ea9029a08b3aa88f9a9313b2e75eadb54c4d6bca6ec2a68dafe99b967d89d7c99361768f48e45d187aad9
7
+ data.tar.gz: be19d2b6af46f535269f98d7aee9ca3145fd2b7a61d1a8e65529e758aebbb09231a2931b04c2a68f19737cef7171f19b207324543f9add28342827880b76052c
@@ -105,20 +105,9 @@ module Google
105
105
  def self.storage project = nil, keyfile = nil, scope: nil, retries: nil,
106
106
  timeout: nil
107
107
  require "google/cloud/storage"
108
- project ||= Google::Cloud::Storage::Project.default_project
109
- project = project.to_s # Always cast to a string
110
- fail ArgumentError, "project is missing" if project.empty?
111
-
112
- if keyfile.nil?
113
- credentials = Google::Cloud::Storage::Credentials.default scope: scope
114
- else
115
- credentials = Google::Cloud::Storage::Credentials.new(
116
- keyfile, scope: scope)
117
- end
118
-
119
- Google::Cloud::Storage::Project.new(
120
- Google::Cloud::Storage::Service.new(
121
- project, credentials, retries: retries, timeout: timeout))
108
+ Google::Cloud::Storage.new project: project, keyfile: keyfile,
109
+ scope: scope, retries: retries,
110
+ timeout: timeout
122
111
  end
123
112
  end
124
113
  end
@@ -34,11 +34,12 @@ module Google
34
34
  # is taken care of for you.
35
35
  #
36
36
  # ```ruby
37
- # require "google/cloud"
37
+ # require "google/cloud/storage"
38
38
  #
39
- # gcloud = Google::Cloud.new "my-todo-project",
40
- # "/path/to/keyfile.json"
41
- # storage = gcloud.storage
39
+ # storage = Google::Cloud::Storage.new(
40
+ # project: "my-todo-project",
41
+ # keyfile: "/path/to/keyfile.json"
42
+ # )
42
43
  #
43
44
  # bucket = storage.bucket "my-bucket"
44
45
  # file = bucket.file "path/to/my-file.ext"
@@ -61,10 +62,9 @@ module Google
61
62
  # {Google::Cloud::Storage::Project#bucket})
62
63
  #
63
64
  # ```ruby
64
- # require "google/cloud"
65
+ # require "google/cloud/storage"
65
66
  #
66
- # gcloud = Google::Cloud.new
67
- # storage = gcloud.storage
67
+ # storage = Google::Cloud::Storage.new
68
68
  #
69
69
  # bucket = storage.bucket "my-todo-app"
70
70
  # ```
@@ -73,10 +73,9 @@ module Google
73
73
  # {Google::Cloud::Storage::Project#buckets})
74
74
  #
75
75
  # ```ruby
76
- # require "google/cloud"
76
+ # require "google/cloud/storage"
77
77
  #
78
- # gcloud = Google::Cloud.new
79
- # storage = gcloud.storage
78
+ # storage = Google::Cloud::Storage.new
80
79
  #
81
80
  # all_buckets = storage.buckets
82
81
  # ```
@@ -85,10 +84,9 @@ module Google
85
84
  # through them: (See {Google::Cloud::Storage::Bucket::List#token})
86
85
  #
87
86
  # ```ruby
88
- # require "google/cloud"
87
+ # require "google/cloud/storage"
89
88
  #
90
- # gcloud = Google::Cloud.new
91
- # storage = gcloud.storage
89
+ # storage = Google::Cloud::Storage.new
92
90
  #
93
91
  # all_buckets = []
94
92
  # tmp_buckets = storage.buckets
@@ -109,10 +107,9 @@ module Google
109
107
  # {Google::Cloud::Storage::Project#create_bucket})
110
108
  #
111
109
  # ```ruby
112
- # require "google/cloud"
110
+ # require "google/cloud/storage"
113
111
  #
114
- # gcloud = Google::Cloud.new
115
- # storage = gcloud.storage
112
+ # storage = Google::Cloud::Storage.new
116
113
  #
117
114
  # bucket = storage.create_bucket "my-todo-app-attachments"
118
115
  # ```
@@ -128,10 +125,9 @@ module Google
128
125
  # bucket: (See {Google::Cloud::Storage::Bucket#file})
129
126
  #
130
127
  # ```ruby
131
- # require "google/cloud"
128
+ # require "google/cloud/storage"
132
129
  #
133
- # gcloud = Google::Cloud.new
134
- # storage = gcloud.storage
130
+ # storage = Google::Cloud::Storage.new
135
131
  #
136
132
  # bucket = storage.bucket "my-todo-app"
137
133
  # file = bucket.file "avatars/heidi/400x400.png"
@@ -140,10 +136,9 @@ module Google
140
136
  # You can also retrieve all files in a bucket: (See Bucket#files)
141
137
  #
142
138
  # ```ruby
143
- # require "google/cloud"
139
+ # require "google/cloud/storage"
144
140
  #
145
- # gcloud = Google::Cloud.new
146
- # storage = gcloud.storage
141
+ # storage = Google::Cloud::Storage.new
147
142
  #
148
143
  # bucket = storage.bucket "my-todo-app"
149
144
  # all_files = bucket.files
@@ -152,10 +147,9 @@ module Google
152
147
  # Or you can retrieve all files in a specified path:
153
148
  #
154
149
  # ```ruby
155
- # require "google/cloud"
150
+ # require "google/cloud/storage"
156
151
  #
157
- # gcloud = Google::Cloud.new
158
- # storage = gcloud.storage
152
+ # storage = Google::Cloud::Storage.new
159
153
  #
160
154
  # bucket = storage.bucket "my-todo-app"
161
155
  # avatar_files = bucket.files prefix: "avatars/"
@@ -165,10 +159,9 @@ module Google
165
159
  # through them: (See {Google::Cloud::Storage::File::List#token})
166
160
  #
167
161
  # ```ruby
168
- # require "google/cloud"
162
+ # require "google/cloud/storage"
169
163
  #
170
- # gcloud = Google::Cloud.new
171
- # storage = gcloud.storage
164
+ # storage = Google::Cloud::Storage.new
172
165
  #
173
166
  # bucket = storage.bucket "my-todo-app"
174
167
  #
@@ -192,10 +185,9 @@ module Google
192
185
  # bucket. (See {Google::Cloud::Storage::Bucket#create_file})
193
186
  #
194
187
  # ```ruby
195
- # require "google/cloud"
188
+ # require "google/cloud/storage"
196
189
  #
197
- # gcloud = Google::Cloud.new
198
- # storage = gcloud.storage
190
+ # storage = Google::Cloud::Storage.new
199
191
  #
200
192
  # bucket = storage.bucket "my-todo-app"
201
193
  # bucket.create_file "/var/todo-app/avatars/heidi/400x400.png",
@@ -217,11 +209,10 @@ module Google
217
209
  # an encrypted file without providing the encryption key.
218
210
  #
219
211
  # ```ruby
220
- # require "google/cloud"
212
+ # require "google/cloud/storage"
221
213
  # require "digest/sha2"
222
214
  #
223
- # gcloud = Google::Cloud.new
224
- # storage = gcloud.storage
215
+ # storage = Google::Cloud::Storage.new
225
216
  # bucket = storage.bucket "my-todo-app"
226
217
  #
227
218
  # # Key generation shown for example purposes only. Write your own.
@@ -247,10 +238,9 @@ module Google
247
238
  # {Google::Cloud::Storage::File#download})
248
239
  #
249
240
  # ```ruby
250
- # require "google/cloud"
241
+ # require "google/cloud/storage"
251
242
  #
252
- # gcloud = Google::Cloud.new
253
- # storage = gcloud.storage
243
+ # storage = Google::Cloud::Storage.new
254
244
  #
255
245
  # bucket = storage.bucket "my-todo-app"
256
246
  # file = bucket.file "avatars/heidi/400x400.png"
@@ -265,10 +255,9 @@ module Google
265
255
  # {Google::Cloud::Storage::File#signed_url})
266
256
  #
267
257
  # ```ruby
268
- # require "google/cloud"
258
+ # require "google/cloud/storage"
269
259
  #
270
- # gcloud = Google::Cloud.new
271
- # storage = gcloud.storage
260
+ # storage = Google::Cloud::Storage.new
272
261
  #
273
262
  # bucket = storage.bucket "my-todo-app"
274
263
  # file = bucket.file "avatars/heidi/400x400.png"
@@ -289,10 +278,9 @@ module Google
289
278
  # email address:
290
279
  #
291
280
  # ```ruby
292
- # require "google/cloud"
281
+ # require "google/cloud/storage"
293
282
  #
294
- # gcloud = Google::Cloud.new
295
- # storage = gcloud.storage
283
+ # storage = Google::Cloud::Storage.new
296
284
  #
297
285
  # bucket = storage.bucket "my-todo-app"
298
286
  #
@@ -304,10 +292,9 @@ module Google
304
292
  # the email address:
305
293
  #
306
294
  # ```ruby
307
- # require "google/cloud"
295
+ # require "google/cloud/storage"
308
296
  #
309
- # gcloud = Google::Cloud.new
310
- # storage = gcloud.storage
297
+ # storage = Google::Cloud::Storage.new
311
298
  #
312
299
  # bucket = storage.bucket "my-todo-app"
313
300
  #
@@ -319,10 +306,9 @@ module Google
319
306
  # permissions:
320
307
  #
321
308
  # ```ruby
322
- # require "google/cloud"
309
+ # require "google/cloud/storage"
323
310
  #
324
- # gcloud = Google::Cloud.new
325
- # storage = gcloud.storage
311
+ # storage = Google::Cloud::Storage.new
326
312
  #
327
313
  # bucket = storage.bucket "my-todo-app"
328
314
  #
@@ -340,10 +326,9 @@ module Google
340
326
  # email address:
341
327
  #
342
328
  # ```ruby
343
- # require "google/cloud"
329
+ # require "google/cloud/storage"
344
330
  #
345
- # gcloud = Google::Cloud.new
346
- # storage = gcloud.storage
331
+ # storage = Google::Cloud::Storage.new
347
332
  #
348
333
  # bucket = storage.bucket "my-todo-app"
349
334
  # file = bucket.file "avatars/heidi/400x400.png"
@@ -356,10 +341,9 @@ module Google
356
341
  # email address:
357
342
  #
358
343
  # ```ruby
359
- # require "google/cloud"
344
+ # require "google/cloud/storage"
360
345
  #
361
- # gcloud = Google::Cloud.new
362
- # storage = gcloud.storage
346
+ # storage = Google::Cloud::Storage.new
363
347
  #
364
348
  # bucket = storage.bucket "my-todo-app"
365
349
  # file = bucket.file "avatars/heidi/400x400.png"
@@ -371,10 +355,9 @@ module Google
371
355
  # Access to a file can also be granted to a predefined list of permissions:
372
356
  #
373
357
  # ```ruby
374
- # require "google/cloud"
358
+ # require "google/cloud/storage"
375
359
  #
376
- # gcloud = Google::Cloud.new
377
- # storage = gcloud.storage
360
+ # storage = Google::Cloud::Storage.new
378
361
  #
379
362
  # bucket = storage.bucket "my-todo-app"
380
363
  # file = bucket.file "avatars/heidi/400x400.png"
@@ -396,10 +379,9 @@ module Google
396
379
  # You can also set the request `timeout` value in seconds.
397
380
  #
398
381
  # ```ruby
399
- # require "google/cloud"
382
+ # require "google/cloud/storage"
400
383
  #
401
- # gcloud = Google::Cloud.new
402
- # storage = gcloud.storage retries: 10, timeout: 120
384
+ # storage = Google::Cloud::Storage.new retries: 10, timeout: 120
403
385
  # ```
404
386
  #
405
387
  # See the [Storage status and error
@@ -407,6 +389,60 @@ module Google
407
389
  # for a list of error conditions.
408
390
  #
409
391
  module Storage
392
+ ##
393
+ # Creates a new object for connecting to the Storage service.
394
+ # Each call creates a new connection.
395
+ #
396
+ # For more information on connecting to Google Cloud see the
397
+ # [Authentication
398
+ # Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
399
+ #
400
+ # @param [String] project Project identifier for the Storage service you
401
+ # are connecting to.
402
+ # @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
403
+ # file path the file must be readable.
404
+ # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
405
+ # the set of resources and operations that the connection can access.
406
+ # See [Using OAuth 2.0 to Access Google
407
+ # APIs](https://developers.google.com/identity/protocols/OAuth2).
408
+ #
409
+ # The default scope is:
410
+ #
411
+ # * `https://www.googleapis.com/auth/devstorage.full_control`
412
+ # @param [Integer] retries Number of times to retry requests on server
413
+ # error. The default value is `3`. Optional.
414
+ # @param [Integer] timeout Default timeout to use in requests. Optional.
415
+ #
416
+ # @return [Google::Cloud::Storage::Project]
417
+ #
418
+ # @example
419
+ # require "google/cloud/storage"
420
+ #
421
+ # storage = Google::Cloud::Storage.new(
422
+ # project: "my-todo-project",
423
+ # keyfile: "/path/to/keyfile.json"
424
+ # )
425
+ #
426
+ # bucket = storage.bucket "my-bucket"
427
+ # file = bucket.file "path/to/my-file.ext"
428
+ #
429
+ def self.new project: nil, keyfile: nil, scope: nil, retries: nil,
430
+ timeout: nil
431
+ project ||= Google::Cloud::Storage::Project.default_project
432
+ project = project.to_s # Always cast to a string
433
+ fail ArgumentError, "project is missing" if project.empty?
434
+
435
+ if keyfile.nil?
436
+ credentials = Google::Cloud::Storage::Credentials.default scope: scope
437
+ else
438
+ credentials = Google::Cloud::Storage::Credentials.new(
439
+ keyfile, scope: scope)
440
+ end
441
+
442
+ Google::Cloud::Storage::Project.new(
443
+ Google::Cloud::Storage::Service.new(
444
+ project, credentials, retries: retries, timeout: timeout))
445
+ end
410
446
  end
411
447
  end
412
448
  end
@@ -28,10 +28,9 @@ module Google
28
28
  # Represents a Storage bucket. Belongs to a Project and has many Files.
29
29
  #
30
30
  # @example
31
- # require "google/cloud"
31
+ # require "google/cloud/storage"
32
32
  #
33
- # gcloud = Google::Cloud.new
34
- # storage = gcloud.storage
33
+ # storage = Google::Cloud::Storage.new
35
34
  #
36
35
  # bucket = storage.bucket "my-bucket"
37
36
  # file = bucket.file "path/to/my-file.ext"
@@ -101,10 +100,9 @@ module Google
101
100
  # @yieldparam [Bucket::Cors] cors the object accepting CORS rules
102
101
  #
103
102
  # @example Retrieving the bucket's CORS rules.
104
- # require "google/cloud"
103
+ # require "google/cloud/storage"
105
104
  #
106
- # gcloud = Google::Cloud.new
107
- # storage = gcloud.storage
105
+ # storage = Google::Cloud::Storage.new
108
106
  #
109
107
  # bucket = storage.bucket "my-todo-app"
110
108
  # bucket.cors #=> [{"origin"=>["http://example.org"],
@@ -113,10 +111,9 @@ module Google
113
111
  # # "maxAgeSeconds"=>3600}]
114
112
  #
115
113
  # @example Updating the bucket's CORS rules inside a block.
116
- # require "google/cloud"
114
+ # require "google/cloud/storage"
117
115
  #
118
- # gcloud = Google::Cloud.new
119
- # storage = gcloud.storage
116
+ # storage = Google::Cloud::Storage.new
120
117
  # bucket = storage.bucket "my-todo-app"
121
118
  #
122
119
  # bucket.update do |b|
@@ -201,7 +198,8 @@ module Google
201
198
  ##
202
199
  # The bucket's storage class. This defines how objects in the bucket are
203
200
  # stored and determines the SLA and the cost of storage. Values include
204
- # `STANDARD`, `NEARLINE`, and `DURABLE_REDUCED_AVAILABILITY`.
201
+ # `MULTI_REGIONAL`, `REGIONAL`, `NEARLINE`, `COLDLINE`, `STANDARD`,
202
+ # and `DURABLE_REDUCED_AVAILABILITY`.
205
203
  def storage_class
206
204
  @gapi.storage_class
207
205
  end
@@ -287,10 +285,9 @@ module Google
287
285
  # file
288
286
  #
289
287
  # @example
290
- # require "google/cloud"
288
+ # require "google/cloud/storage"
291
289
  #
292
- # gcloud = Google::Cloud.new
293
- # storage = gcloud.storage
290
+ # storage = Google::Cloud::Storage.new
294
291
  #
295
292
  # bucket = storage.bucket "my-bucket"
296
293
  # bucket.update do |b|
@@ -301,10 +298,9 @@ module Google
301
298
  # end
302
299
  #
303
300
  # @example New CORS rules can also be added in a nested block:
304
- # require "google/cloud"
301
+ # require "google/cloud/storage"
305
302
  #
306
- # gcloud = Google::Cloud.new
307
- # storage = gcloud.storage
303
+ # storage = Google::Cloud::Storage.new
308
304
  # bucket = storage.bucket "my-todo-app"
309
305
  #
310
306
  # bucket.update do |b|
@@ -334,10 +330,9 @@ module Google
334
330
  # @return [Boolean] Returns `true` if the bucket was deleted.
335
331
  #
336
332
  # @example
337
- # require "google/cloud"
333
+ # require "google/cloud/storage"
338
334
  #
339
- # gcloud = Google::Cloud.new
340
- # storage = gcloud.storage
335
+ # storage = Google::Cloud::Storage.new
341
336
  #
342
337
  # bucket = storage.bucket "my-bucket"
343
338
  # bucket.delete
@@ -374,10 +369,9 @@ module Google
374
369
  # {Google::Cloud::Storage::File::List})
375
370
  #
376
371
  # @example
377
- # require "google/cloud"
372
+ # require "google/cloud/storage"
378
373
  #
379
- # gcloud = Google::Cloud.new
380
- # storage = gcloud.storage
374
+ # storage = Google::Cloud::Storage.new
381
375
  #
382
376
  # bucket = storage.bucket "my-bucket"
383
377
  # files = bucket.files
@@ -386,10 +380,9 @@ module Google
386
380
  # end
387
381
  #
388
382
  # @example Retrieve all files: (See {File::List#all})
389
- # require "google/cloud"
383
+ # require "google/cloud/storage"
390
384
  #
391
- # gcloud = Google::Cloud.new
392
- # storage = gcloud.storage
385
+ # storage = Google::Cloud::Storage.new
393
386
  #
394
387
  # bucket = storage.bucket "my-bucket"
395
388
  # files = bucket.files
@@ -438,10 +431,9 @@ module Google
438
431
  # not exist
439
432
  #
440
433
  # @example
441
- # require "google/cloud"
434
+ # require "google/cloud/storage"
442
435
  #
443
- # gcloud = Google::Cloud.new
444
- # storage = gcloud.storage
436
+ # storage = Google::Cloud::Storage.new
445
437
  #
446
438
  # bucket = storage.bucket "my-bucket"
447
439
  #
@@ -539,20 +531,18 @@ module Google
539
531
  # @return [Google::Cloud::Storage::File]
540
532
  #
541
533
  # @example
542
- # require "google/cloud"
534
+ # require "google/cloud/storage"
543
535
  #
544
- # gcloud = Google::Cloud.new
545
- # storage = gcloud.storage
536
+ # storage = Google::Cloud::Storage.new
546
537
  #
547
538
  # bucket = storage.bucket "my-bucket"
548
539
  #
549
540
  # bucket.create_file "path/to/local.file.ext"
550
541
  #
551
542
  # @example Specifying a destination path:
552
- # require "google/cloud"
543
+ # require "google/cloud/storage"
553
544
  #
554
- # gcloud = Google::Cloud.new
555
- # storage = gcloud.storage
545
+ # storage = Google::Cloud::Storage.new
556
546
  #
557
547
  # bucket = storage.bucket "my-bucket"
558
548
  #
@@ -560,11 +550,10 @@ module Google
560
550
  # "destination/path/file.ext"
561
551
  #
562
552
  # @example Providing a customer-supplied encryption key:
563
- # require "google/cloud"
553
+ # require "google/cloud/storage"
564
554
  # require "digest/sha2"
565
555
  #
566
- # gcloud = Google::Cloud.new
567
- # storage = gcloud.storage
556
+ # storage = Google::Cloud::Storage.new
568
557
  # bucket = storage.bucket "my-bucket"
569
558
  #
570
559
  # # Key generation shown for example purposes only. Write your own.
@@ -604,6 +593,88 @@ module Google
604
593
  alias_method :upload_file, :create_file
605
594
  alias_method :new_file, :create_file
606
595
 
596
+ ##
597
+ # Access without authentication can be granted to a File for a specified
598
+ # period of time. This URL uses a cryptographic signature of your
599
+ # credentials to access the file identified by `path`. A URL can be
600
+ # created for paths that do not yet exist. For instance, a URL can be
601
+ # created to `PUT` file contents to.
602
+ #
603
+ # Generating a URL requires service account credentials, either by
604
+ # connecting with a service account when calling
605
+ # {Google::Cloud.storage}, or by passing in the service account `issuer`
606
+ # and `signing_key` values. Although the private key can be passed as a
607
+ # string for convenience, creating and storing an instance of
608
+ # `OpenSSL::PKey::RSA` is more efficient when making multiple calls to
609
+ # `signed_url`.
610
+ #
611
+ # A {SignedUrlUnavailable} is raised if the service account credentials
612
+ # are missing. Service account credentials are acquired by following the
613
+ # steps in [Service Account Authentication](
614
+ # https://cloud.google.com/storage/docs/authentication#service_accounts).
615
+ #
616
+ # @see https://cloud.google.com/storage/docs/access-control#Signed-URLs
617
+ # Access Control Signed URLs guide
618
+ #
619
+ # @param [String] path Path to of the file in Google Cloud Storage.
620
+ # @param [String] method The HTTP verb to be used with the signed URL.
621
+ # Signed URLs can be used
622
+ # with `GET`, `HEAD`, `PUT`, and `DELETE` requests. Default is `GET`.
623
+ # @param [Integer] expires The number of seconds until the URL expires.
624
+ # Default is 300/5 minutes.
625
+ # @param [String] content_type When provided, the client (browser) must
626
+ # send this value in the HTTP header. e.g. `text/plain`
627
+ # @param [String] content_md5 The MD5 digest value in base64. If you
628
+ # provide this in the string, the client (usually a browser) must
629
+ # provide this HTTP header with this same value in its request.
630
+ # @param [String] issuer Service Account's Client Email.
631
+ # @param [String] client_email Service Account's Client Email.
632
+ # @param [OpenSSL::PKey::RSA, String] signing_key Service Account's
633
+ # Private Key.
634
+ # @param [OpenSSL::PKey::RSA, String] private_key Service Account's
635
+ # Private Key.
636
+ #
637
+ # @example
638
+ # require "google/cloud/storage"
639
+ #
640
+ # storage = Google::Cloud::Storage.new
641
+ #
642
+ # bucket = storage.bucket "my-todo-app"
643
+ # shared_url = bucket.signed_url "avatars/heidi/400x400.png",
644
+ #
645
+ # @example Any of the option parameters may be specified:
646
+ # require "google/cloud/storage"
647
+ #
648
+ # storage = Google::Cloud::Storage.new
649
+ #
650
+ # bucket = storage.bucket "my-todo-app"
651
+ # shared_url = bucket.signed_url "avatars/heidi/400x400.png",
652
+ # method: "PUT",
653
+ # expires: 300 # 5 minutes from now
654
+ #
655
+ # @example Using the `issuer` and `signing_key` options:
656
+ # require "google/cloud/storage"
657
+ #
658
+ # storage = Google::Cloud.storage
659
+ #
660
+ # bucket = storage.bucket "my-todo-app"
661
+ # key = OpenSSL::PKey::RSA.new "-----BEGIN PRIVATE KEY-----\n..."
662
+ # shared_url = bucket.signed_url "avatars/heidi/400x400.png",
663
+ # issuer: "service-account@gcloud.com",
664
+ # signing_key: key
665
+ #
666
+ def signed_url path, method: nil, expires: nil, content_type: nil,
667
+ content_md5: nil, issuer: nil, client_email: nil,
668
+ signing_key: nil, private_key: nil
669
+ ensure_service!
670
+ options = { method: method, expires: expires,
671
+ content_type: content_type, content_md5: content_md5,
672
+ issuer: issuer, client_email: client_email,
673
+ signing_key: signing_key, private_key: private_key }
674
+ signer = File::Signer.from_bucket self, path
675
+ signer.signed_url options
676
+ end
677
+
607
678
  ##
608
679
  # The Bucket::Acl instance used to control access to the bucket.
609
680
  #
@@ -615,10 +686,9 @@ module Google
615
686
  # Control guide
616
687
  #
617
688
  # @example Grant access to a user by prepending `"user-"` to an email:
618
- # require "google/cloud"
689
+ # require "google/cloud/storage"
619
690
  #
620
- # gcloud = Google::Cloud.new
621
- # storage = gcloud.storage
691
+ # storage = Google::Cloud::Storage.new
622
692
  #
623
693
  # bucket = storage.bucket "my-todo-app"
624
694
  #
@@ -626,10 +696,9 @@ module Google
626
696
  # bucket.acl.add_reader "user-#{email}"
627
697
  #
628
698
  # @example Grant access to a group by prepending `"group-"` to an email:
629
- # require "google/cloud"
699
+ # require "google/cloud/storage"
630
700
  #
631
- # gcloud = Google::Cloud.new
632
- # storage = gcloud.storage
701
+ # storage = Google::Cloud::Storage.new
633
702
  #
634
703
  # bucket = storage.bucket "my-todo-app"
635
704
  #
@@ -637,10 +706,9 @@ module Google
637
706
  # bucket.acl.add_reader "group-#{email}"
638
707
  #
639
708
  # @example Or, grant access via a predefined permissions list:
640
- # require "google/cloud"
709
+ # require "google/cloud/storage"
641
710
  #
642
- # gcloud = Google::Cloud.new
643
- # storage = gcloud.storage
711
+ # storage = Google::Cloud::Storage.new
644
712
  #
645
713
  # bucket = storage.bucket "my-todo-app"
646
714
  #
@@ -662,10 +730,9 @@ module Google
662
730
  # Control guide
663
731
  #
664
732
  # @example Grant access to a user by prepending `"user-"` to an email:
665
- # require "google/cloud"
733
+ # require "google/cloud/storage"
666
734
  #
667
- # gcloud = Google::Cloud.new
668
- # storage = gcloud.storage
735
+ # storage = Google::Cloud::Storage.new
669
736
  #
670
737
  # bucket = storage.bucket "my-todo-app"
671
738
  #
@@ -673,10 +740,9 @@ module Google
673
740
  # bucket.default_acl.add_reader "user-#{email}"
674
741
  #
675
742
  # @example Grant access to a group by prepending `"group-"` to an email
676
- # require "google/cloud"
743
+ # require "google/cloud/storage"
677
744
  #
678
- # gcloud = Google::Cloud.new
679
- # storage = gcloud.storage
745
+ # storage = Google::Cloud::Storage.new
680
746
  #
681
747
  # bucket = storage.bucket "my-todo-app"
682
748
  #
@@ -684,10 +750,9 @@ module Google
684
750
  # bucket.default_acl.add_reader "group-#{email}"
685
751
  #
686
752
  # @example Or, grant access via a predefined permissions list:
687
- # require "google/cloud"
753
+ # require "google/cloud/storage"
688
754
  #
689
- # gcloud = Google::Cloud.new
690
- # storage = gcloud.storage
755
+ # storage = Google::Cloud::Storage.new
691
756
  #
692
757
  # bucket = storage.bucket "my-todo-app"
693
758
  #