google-cloud-storage 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/google-cloud-storage.rb +124 -0
- data/lib/google/cloud/storage.rb +412 -0
- data/lib/google/cloud/storage/bucket.rb +783 -0
- data/lib/google/cloud/storage/bucket/acl.rb +815 -0
- data/lib/google/cloud/storage/bucket/cors.rb +157 -0
- data/lib/google/cloud/storage/bucket/list.rb +174 -0
- data/lib/google/cloud/storage/credentials.rb +31 -0
- data/lib/google/cloud/storage/errors.rb +67 -0
- data/lib/google/cloud/storage/file.rb +849 -0
- data/lib/google/cloud/storage/file/acl.rb +429 -0
- data/lib/google/cloud/storage/file/list.rb +193 -0
- data/lib/google/cloud/storage/file/verifier.rb +69 -0
- data/lib/google/cloud/storage/project.rb +321 -0
- data/lib/google/cloud/storage/service.rb +310 -0
- data/lib/google/cloud/storage/version.rb +22 -0
- metadata +215 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6a1c76520a0d11fc1c5c1eab6e2d1f1b4ff91722
|
4
|
+
data.tar.gz: 13c3e68262197af5291c8ad83176390781a4fcad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3a72a3dc3325b969ecb69737731f794e5115a3691d3d2194858df9358a3384a5cb3f21e6cc54c0a67f14bd5004e05131acd1d636385df8a07543348bc93eb9d9
|
7
|
+
data.tar.gz: 24acdbc0c2ebf827a4f6a2a64457f1b45719d8222df10612054e0579b3fea5719f97a8ef845470e884dc9c334ec508b8f9c7d751147753da555304166b8d66a6
|
@@ -0,0 +1,124 @@
|
|
1
|
+
# Copyright 2016 Google Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
##
|
16
|
+
# This file is here to be autorequired by bundler, so that the .bigquery and
|
17
|
+
# #bigquery methods can be available, but the library and all dependencies won't
|
18
|
+
# be loaded until required and used.
|
19
|
+
|
20
|
+
|
21
|
+
gem "google-cloud-core"
|
22
|
+
require "google/cloud"
|
23
|
+
|
24
|
+
module Google
|
25
|
+
module Cloud
|
26
|
+
##
|
27
|
+
# Creates a new object for connecting to the Storage service.
|
28
|
+
# Each call creates a new connection.
|
29
|
+
#
|
30
|
+
# For more information on connecting to Google Cloud see the [Authentication
|
31
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
|
32
|
+
#
|
33
|
+
# @see https://cloud.google.com/storage/docs/authentication#oauth Storage
|
34
|
+
# OAuth 2.0 Authentication
|
35
|
+
#
|
36
|
+
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
37
|
+
# set of resources and operations that the connection can access. See
|
38
|
+
# [Using OAuth 2.0 to Access Google
|
39
|
+
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
40
|
+
#
|
41
|
+
# The default scope is:
|
42
|
+
#
|
43
|
+
# * `https://www.googleapis.com/auth/devstorage.full_control`
|
44
|
+
# @param [Integer] retries Number of times to retry requests on server
|
45
|
+
# error. The default value is `3`. Optional.
|
46
|
+
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
47
|
+
#
|
48
|
+
# @return [Google::Cloud::Storage::Project]
|
49
|
+
#
|
50
|
+
# @example
|
51
|
+
# require "google/cloud"
|
52
|
+
#
|
53
|
+
# gcloud = Google::Cloud.new
|
54
|
+
# storage = gcloud.storage
|
55
|
+
# bucket = storage.bucket "my-bucket"
|
56
|
+
# file = bucket.file "path/to/my-file.ext"
|
57
|
+
#
|
58
|
+
# @example The default scope can be overridden with the `scope` option:
|
59
|
+
# require "google/cloud"
|
60
|
+
#
|
61
|
+
# gcloud = Google::Cloud.new
|
62
|
+
# readonly_scope = "https://www.googleapis.com/auth/devstorage.read_only"
|
63
|
+
# readonly_storage = gcloud.storage scope: readonly_scope
|
64
|
+
#
|
65
|
+
def storage scope: nil, retries: nil, timeout: nil
|
66
|
+
Google::Cloud.storage @project, @keyfile, scope: scope,
|
67
|
+
retries: (retries || @retries),
|
68
|
+
timeout: (timeout || @timeout)
|
69
|
+
end
|
70
|
+
|
71
|
+
##
|
72
|
+
# Creates a new object for connecting to the Storage service.
|
73
|
+
# Each call creates a new connection.
|
74
|
+
#
|
75
|
+
# For more information on connecting to Google Cloud see the [Authentication
|
76
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
|
77
|
+
#
|
78
|
+
# @param [String] project Project identifier for the Storage service you are
|
79
|
+
# connecting to.
|
80
|
+
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
|
81
|
+
# file path the file must be readable.
|
82
|
+
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
83
|
+
# set of resources and operations that the connection can access. See
|
84
|
+
# [Using OAuth 2.0 to Access Google
|
85
|
+
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
86
|
+
#
|
87
|
+
# The default scope is:
|
88
|
+
#
|
89
|
+
# * `https://www.googleapis.com/auth/devstorage.full_control`
|
90
|
+
# @param [Integer] retries Number of times to retry requests on server
|
91
|
+
# error. The default value is `3`. Optional.
|
92
|
+
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
93
|
+
#
|
94
|
+
# @return [Google::Cloud::Storage::Project]
|
95
|
+
#
|
96
|
+
# @example
|
97
|
+
# require "google/cloud/storage"
|
98
|
+
#
|
99
|
+
# storage = Google::Cloud.storage "my-todo-project",
|
100
|
+
# "/path/to/keyfile.json"
|
101
|
+
#
|
102
|
+
# bucket = storage.bucket "my-bucket"
|
103
|
+
# file = bucket.file "path/to/my-file.ext"
|
104
|
+
#
|
105
|
+
def self.storage project = nil, keyfile = nil, scope: nil, retries: nil,
|
106
|
+
timeout: nil
|
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))
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,412 @@
|
|
1
|
+
# Copyright 2014 Google Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "google-cloud-storage"
|
17
|
+
require "google/cloud/storage/project"
|
18
|
+
|
19
|
+
module Google
|
20
|
+
module Cloud
|
21
|
+
##
|
22
|
+
# # Google Cloud Storage
|
23
|
+
#
|
24
|
+
# Google Cloud Storage is an Internet service to store data in Google's
|
25
|
+
# cloud. It allows world-wide storage and retrieval of any amount of data
|
26
|
+
# and at any time, taking advantage of Google's own reliable and fast
|
27
|
+
# networking infrastructure to perform data operations in a cost effective
|
28
|
+
# manner.
|
29
|
+
#
|
30
|
+
# The goal of google-cloud is to provide a API that is comfortable to
|
31
|
+
# Rubyists. Authentication is handled by {Google::Cloud#storage}. You can
|
32
|
+
# provide the project and credential information to connect to the Storage
|
33
|
+
# service, or if you are running on Google Compute Engine this configuration
|
34
|
+
# is taken care of for you.
|
35
|
+
#
|
36
|
+
# ```ruby
|
37
|
+
# require "google/cloud"
|
38
|
+
#
|
39
|
+
# gcloud = Google::Cloud.new "my-todo-project",
|
40
|
+
# "/path/to/keyfile.json"
|
41
|
+
# storage = gcloud.storage
|
42
|
+
#
|
43
|
+
# bucket = storage.bucket "my-bucket"
|
44
|
+
# file = bucket.file "path/to/my-file.ext"
|
45
|
+
# ```
|
46
|
+
#
|
47
|
+
# You can learn more about various options for connection on the
|
48
|
+
# [Authentication
|
49
|
+
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
|
50
|
+
#
|
51
|
+
# To learn more about Cloud Storage, read the
|
52
|
+
# [Google Cloud Storage Overview
|
53
|
+
# ](https://cloud.google.com/storage/docs/overview).
|
54
|
+
#
|
55
|
+
# ## Retrieving Buckets
|
56
|
+
#
|
57
|
+
# A Bucket is the container for your data. There is no limit on the number
|
58
|
+
# of buckets that you can create in a project. You can use buckets to
|
59
|
+
# organize and control access to your data. Each bucket has a unique name,
|
60
|
+
# which is how they are retrieved: (See
|
61
|
+
# {Google::Cloud::Storage::Project#bucket})
|
62
|
+
#
|
63
|
+
# ```ruby
|
64
|
+
# require "google/cloud"
|
65
|
+
#
|
66
|
+
# gcloud = Google::Cloud.new
|
67
|
+
# storage = gcloud.storage
|
68
|
+
#
|
69
|
+
# bucket = storage.bucket "my-todo-app"
|
70
|
+
# ```
|
71
|
+
#
|
72
|
+
# You can also retrieve all buckets on a project: (See
|
73
|
+
# {Google::Cloud::Storage::Project#buckets})
|
74
|
+
#
|
75
|
+
# ```ruby
|
76
|
+
# require "google/cloud"
|
77
|
+
#
|
78
|
+
# gcloud = Google::Cloud.new
|
79
|
+
# storage = gcloud.storage
|
80
|
+
#
|
81
|
+
# all_buckets = storage.buckets
|
82
|
+
# ```
|
83
|
+
#
|
84
|
+
# If you have a significant number of buckets, you may need to paginate
|
85
|
+
# through them: (See {Google::Cloud::Storage::Bucket::List#token})
|
86
|
+
#
|
87
|
+
# ```ruby
|
88
|
+
# require "google/cloud"
|
89
|
+
#
|
90
|
+
# gcloud = Google::Cloud.new
|
91
|
+
# storage = gcloud.storage
|
92
|
+
#
|
93
|
+
# all_buckets = []
|
94
|
+
# tmp_buckets = storage.buckets
|
95
|
+
# while tmp_buckets.any? do
|
96
|
+
# tmp_buckets.each do |bucket|
|
97
|
+
# all_buckets << bucket
|
98
|
+
# end
|
99
|
+
# # break loop if no more buckets available
|
100
|
+
# break if tmp_buckets.token.nil?
|
101
|
+
# # get the next group of buckets
|
102
|
+
# tmp_buckets = storage.buckets token: tmp_buckets.token
|
103
|
+
# end
|
104
|
+
# ```
|
105
|
+
#
|
106
|
+
# ## Creating a Bucket
|
107
|
+
#
|
108
|
+
# A unique name is all that is needed to create a new bucket: (See
|
109
|
+
# {Google::Cloud::Storage::Project#create_bucket})
|
110
|
+
#
|
111
|
+
# ```ruby
|
112
|
+
# require "google/cloud"
|
113
|
+
#
|
114
|
+
# gcloud = Google::Cloud.new
|
115
|
+
# storage = gcloud.storage
|
116
|
+
#
|
117
|
+
# bucket = storage.create_bucket "my-todo-app-attachments"
|
118
|
+
# ```
|
119
|
+
#
|
120
|
+
# ## Retrieving Files
|
121
|
+
#
|
122
|
+
# A File is an individual pieces of data that you store in Google Cloud
|
123
|
+
# Storage. Files contain the data stored as well as metadata describing the
|
124
|
+
# data. Files belong to a bucket and cannot be shared among buckets. There
|
125
|
+
# is no limit on the number of objects that you can create in a bucket.
|
126
|
+
#
|
127
|
+
# Files are retrieved by their name, which is the path of the file in the
|
128
|
+
# bucket: (See {Google::Cloud::Storage::Bucket#file})
|
129
|
+
#
|
130
|
+
# ```ruby
|
131
|
+
# require "google/cloud"
|
132
|
+
#
|
133
|
+
# gcloud = Google::Cloud.new
|
134
|
+
# storage = gcloud.storage
|
135
|
+
#
|
136
|
+
# bucket = storage.bucket "my-todo-app"
|
137
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
138
|
+
# ```
|
139
|
+
#
|
140
|
+
# You can also retrieve all files in a bucket: (See Bucket#files)
|
141
|
+
#
|
142
|
+
# ```ruby
|
143
|
+
# require "google/cloud"
|
144
|
+
#
|
145
|
+
# gcloud = Google::Cloud.new
|
146
|
+
# storage = gcloud.storage
|
147
|
+
#
|
148
|
+
# bucket = storage.bucket "my-todo-app"
|
149
|
+
# all_files = bucket.files
|
150
|
+
# ```
|
151
|
+
#
|
152
|
+
# Or you can retrieve all files in a specified path:
|
153
|
+
#
|
154
|
+
# ```ruby
|
155
|
+
# require "google/cloud"
|
156
|
+
#
|
157
|
+
# gcloud = Google::Cloud.new
|
158
|
+
# storage = gcloud.storage
|
159
|
+
#
|
160
|
+
# bucket = storage.bucket "my-todo-app"
|
161
|
+
# avatar_files = bucket.files prefix: "avatars/"
|
162
|
+
# ```
|
163
|
+
#
|
164
|
+
# If you have a significant number of files, you may need to paginate
|
165
|
+
# through them: (See {Google::Cloud::Storage::File::List#token})
|
166
|
+
#
|
167
|
+
# ```ruby
|
168
|
+
# require "google/cloud"
|
169
|
+
#
|
170
|
+
# gcloud = Google::Cloud.new
|
171
|
+
# storage = gcloud.storage
|
172
|
+
#
|
173
|
+
# bucket = storage.bucket "my-todo-app"
|
174
|
+
#
|
175
|
+
# all_files = []
|
176
|
+
# tmp_files = bucket.files
|
177
|
+
# while tmp_files.any? do
|
178
|
+
# tmp_files.each do |file|
|
179
|
+
# all_files << file
|
180
|
+
# end
|
181
|
+
# # break loop if no more files available
|
182
|
+
# break if tmp_files.token.nil?
|
183
|
+
# # get the next group of files
|
184
|
+
# tmp_files = bucket.files token: tmp_files.token
|
185
|
+
# end
|
186
|
+
# ```
|
187
|
+
#
|
188
|
+
# ## Creating a File
|
189
|
+
#
|
190
|
+
# A new File can be uploaded by specifying the location of a file on the
|
191
|
+
# local file system, and the name/path that the file should be stored in the
|
192
|
+
# bucket. (See {Google::Cloud::Storage::Bucket#create_file})
|
193
|
+
#
|
194
|
+
# ```ruby
|
195
|
+
# require "google/cloud"
|
196
|
+
#
|
197
|
+
# gcloud = Google::Cloud.new
|
198
|
+
# storage = gcloud.storage
|
199
|
+
#
|
200
|
+
# bucket = storage.bucket "my-todo-app"
|
201
|
+
# bucket.create_file "/var/todo-app/avatars/heidi/400x400.png",
|
202
|
+
# "avatars/heidi/400x400.png"
|
203
|
+
# ```
|
204
|
+
#
|
205
|
+
# ### Customer-supplied encryption keys
|
206
|
+
#
|
207
|
+
# By default, Google Cloud Storage manages server-side encryption keys on
|
208
|
+
# your behalf. However, a [customer-supplied encryption
|
209
|
+
# key](https://cloud.google.com/storage/docs/encryption#customer-supplied)
|
210
|
+
# can be provided with the `encryption_key` and `encryption_key_sha256`
|
211
|
+
# options. If given, the same key and SHA256 hash also must be provided to
|
212
|
+
# subsequently download or copy the file. If you use customer-supplied
|
213
|
+
# encryption keys, you must securely manage your keys and ensure that they
|
214
|
+
# are not lost. Also, please note that file metadata is not encrypted, with
|
215
|
+
# the exception of the CRC32C checksum and MD5 hash. The names of files and
|
216
|
+
# buckets are also not encrypted, and you can read or update the metadata of
|
217
|
+
# an encrypted file without providing the encryption key.
|
218
|
+
#
|
219
|
+
# ```ruby
|
220
|
+
# require "google/cloud"
|
221
|
+
# require "digest/sha2"
|
222
|
+
#
|
223
|
+
# gcloud = Google::Cloud.new
|
224
|
+
# storage = gcloud.storage
|
225
|
+
# bucket = storage.bucket "my-todo-app"
|
226
|
+
#
|
227
|
+
# # Key generation shown for example purposes only. Write your own.
|
228
|
+
# cipher = OpenSSL::Cipher.new "aes-256-cfb"
|
229
|
+
# cipher.encrypt
|
230
|
+
# key = cipher.random_key
|
231
|
+
# key_hash = Digest::SHA256.digest key
|
232
|
+
#
|
233
|
+
# bucket.create_file "/var/todo-app/avatars/heidi/400x400.png",
|
234
|
+
# "avatars/heidi/400x400.png",
|
235
|
+
# encryption_key: key,
|
236
|
+
# encryption_key_sha256: key_hash
|
237
|
+
#
|
238
|
+
# # Store your key and hash securely for later use.
|
239
|
+
# file = bucket.file "avatars/heidi/400x400.png",
|
240
|
+
# encryption_key: key,
|
241
|
+
# encryption_key_sha256: key_hash
|
242
|
+
# ```
|
243
|
+
#
|
244
|
+
# ## Downloading a File
|
245
|
+
#
|
246
|
+
# Files can be downloaded to the local file system. (See
|
247
|
+
# {Google::Cloud::Storage::File#download})
|
248
|
+
#
|
249
|
+
# ```ruby
|
250
|
+
# require "google/cloud"
|
251
|
+
#
|
252
|
+
# gcloud = Google::Cloud.new
|
253
|
+
# storage = gcloud.storage
|
254
|
+
#
|
255
|
+
# bucket = storage.bucket "my-todo-app"
|
256
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
257
|
+
# file.download "/var/todo-app/avatars/heidi/400x400.png"
|
258
|
+
# ```
|
259
|
+
#
|
260
|
+
# ## Using Signed URLs
|
261
|
+
#
|
262
|
+
# Access without authentication can be granted to a File for a specified
|
263
|
+
# period of time. This URL uses a cryptographic signature of your
|
264
|
+
# credentials to access the file. (See
|
265
|
+
# {Google::Cloud::Storage::File#signed_url})
|
266
|
+
#
|
267
|
+
# ```ruby
|
268
|
+
# require "google/cloud"
|
269
|
+
#
|
270
|
+
# gcloud = Google::Cloud.new
|
271
|
+
# storage = gcloud.storage
|
272
|
+
#
|
273
|
+
# bucket = storage.bucket "my-todo-app"
|
274
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
275
|
+
# shared_url = file.signed_url method: "GET",
|
276
|
+
# expires: 300 # 5 minutes from now
|
277
|
+
# ```
|
278
|
+
#
|
279
|
+
# ## Controlling Access to a Bucket
|
280
|
+
#
|
281
|
+
# Access to a bucket is controlled with
|
282
|
+
# {Google::Cloud::Storage::Bucket#acl}. A bucket has owners, writers, and
|
283
|
+
# readers. Permissions can be granted to an individual user's email address,
|
284
|
+
# a group's email address, as well as many predefined lists. See the [Access
|
285
|
+
# Control guide](https://cloud.google.com/storage/docs/access-control) for
|
286
|
+
# more.
|
287
|
+
#
|
288
|
+
# Access to a bucket can be granted to a user by appending `"user-"` to the
|
289
|
+
# email address:
|
290
|
+
#
|
291
|
+
# ```ruby
|
292
|
+
# require "google/cloud"
|
293
|
+
#
|
294
|
+
# gcloud = Google::Cloud.new
|
295
|
+
# storage = gcloud.storage
|
296
|
+
#
|
297
|
+
# bucket = storage.bucket "my-todo-app"
|
298
|
+
#
|
299
|
+
# email = "heidi@example.net"
|
300
|
+
# bucket.acl.add_reader "user-#{email}"
|
301
|
+
# ```
|
302
|
+
#
|
303
|
+
# Access to a bucket can be granted to a group by appending `"group-"` to
|
304
|
+
# the email address:
|
305
|
+
#
|
306
|
+
# ```ruby
|
307
|
+
# require "google/cloud"
|
308
|
+
#
|
309
|
+
# gcloud = Google::Cloud.new
|
310
|
+
# storage = gcloud.storage
|
311
|
+
#
|
312
|
+
# bucket = storage.bucket "my-todo-app"
|
313
|
+
#
|
314
|
+
# email = "authors@example.net"
|
315
|
+
# bucket.acl.add_reader "group-#{email}"
|
316
|
+
# ```
|
317
|
+
#
|
318
|
+
# Access to a bucket can also be granted to a predefined list of
|
319
|
+
# permissions:
|
320
|
+
#
|
321
|
+
# ```ruby
|
322
|
+
# require "google/cloud"
|
323
|
+
#
|
324
|
+
# gcloud = Google::Cloud.new
|
325
|
+
# storage = gcloud.storage
|
326
|
+
#
|
327
|
+
# bucket = storage.bucket "my-todo-app"
|
328
|
+
#
|
329
|
+
# bucket.acl.public!
|
330
|
+
# ```
|
331
|
+
#
|
332
|
+
# ## Controlling Access to a File
|
333
|
+
#
|
334
|
+
# Access to a file is controlled in two ways, either by the setting the
|
335
|
+
# default permissions to all files in a bucket with
|
336
|
+
# {Google::Cloud::Storage::Bucket#default_acl}, or by setting permissions to
|
337
|
+
# an individual file with {Google::Cloud::Storage::File#acl}.
|
338
|
+
#
|
339
|
+
# Access to a file can be granted to a user by appending `"user-"` to the
|
340
|
+
# email address:
|
341
|
+
#
|
342
|
+
# ```ruby
|
343
|
+
# require "google/cloud"
|
344
|
+
#
|
345
|
+
# gcloud = Google::Cloud.new
|
346
|
+
# storage = gcloud.storage
|
347
|
+
#
|
348
|
+
# bucket = storage.bucket "my-todo-app"
|
349
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
350
|
+
#
|
351
|
+
# email = "heidi@example.net"
|
352
|
+
# file.acl.add_reader "user-#{email}"
|
353
|
+
# ```
|
354
|
+
#
|
355
|
+
# Access to a file can be granted to a group by appending `"group-"` to the
|
356
|
+
# email address:
|
357
|
+
#
|
358
|
+
# ```ruby
|
359
|
+
# require "google/cloud"
|
360
|
+
#
|
361
|
+
# gcloud = Google::Cloud.new
|
362
|
+
# storage = gcloud.storage
|
363
|
+
#
|
364
|
+
# bucket = storage.bucket "my-todo-app"
|
365
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
366
|
+
#
|
367
|
+
# email = "authors@example.net"
|
368
|
+
# file.acl.add_reader "group-#{email}"
|
369
|
+
# ```
|
370
|
+
#
|
371
|
+
# Access to a file can also be granted to a predefined list of permissions:
|
372
|
+
#
|
373
|
+
# ```ruby
|
374
|
+
# require "google/cloud"
|
375
|
+
#
|
376
|
+
# gcloud = Google::Cloud.new
|
377
|
+
# storage = gcloud.storage
|
378
|
+
#
|
379
|
+
# bucket = storage.bucket "my-todo-app"
|
380
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
381
|
+
#
|
382
|
+
# file.acl.public!
|
383
|
+
# ```
|
384
|
+
#
|
385
|
+
# ## Configuring retries and timeout
|
386
|
+
#
|
387
|
+
# You can configure how many times API requests may be automatically
|
388
|
+
# retried. When an API request fails, the response will be inspected to see
|
389
|
+
# if the request meets criteria indicating that it may succeed on retry,
|
390
|
+
# such as `500` and `503` status codes or a specific internal error code
|
391
|
+
# such as `rateLimitExceeded`. If it meets the criteria, the request will be
|
392
|
+
# retried after a delay. If another error occurs, the delay will be
|
393
|
+
# increased before a subsequent attempt, until the `retries` limit is
|
394
|
+
# reached.
|
395
|
+
#
|
396
|
+
# You can also set the request `timeout` value in seconds.
|
397
|
+
#
|
398
|
+
# ```ruby
|
399
|
+
# require "google/cloud"
|
400
|
+
#
|
401
|
+
# gcloud = Google::Cloud.new
|
402
|
+
# storage = gcloud.storage retries: 10, timeout: 120
|
403
|
+
# ```
|
404
|
+
#
|
405
|
+
# See the [Storage status and error
|
406
|
+
# codes](https://cloud.google.com/storage/docs/json_api/v1/status-codes)
|
407
|
+
# for a list of error conditions.
|
408
|
+
#
|
409
|
+
module Storage
|
410
|
+
end
|
411
|
+
end
|
412
|
+
end
|