gcloud 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/AUTHENTICATION.md +1 -1
- data/CHANGELOG.md +14 -0
- data/OVERVIEW.md +87 -0
- data/lib/gcloud.rb +106 -0
- data/lib/gcloud/credentials.rb +1 -1
- data/lib/gcloud/datastore.rb +44 -31
- data/lib/gcloud/datastore/credentials.rb +1 -1
- data/lib/gcloud/datastore/dataset.rb +20 -14
- data/lib/gcloud/datastore/entity.rb +25 -18
- data/lib/gcloud/datastore/key.rb +11 -8
- data/lib/gcloud/pubsub.rb +375 -0
- data/lib/gcloud/pubsub/connection.rb +284 -0
- data/lib/gcloud/pubsub/credentials.rb +29 -0
- data/lib/gcloud/pubsub/errors.rb +91 -0
- data/lib/gcloud/pubsub/message.rb +90 -0
- data/lib/gcloud/pubsub/project.rb +408 -0
- data/lib/gcloud/pubsub/received_message.rb +170 -0
- data/lib/gcloud/pubsub/subscription.rb +605 -0
- data/lib/gcloud/pubsub/subscription/list.rb +50 -0
- data/lib/gcloud/pubsub/topic.rb +640 -0
- data/lib/gcloud/pubsub/topic/list.rb +46 -0
- data/lib/gcloud/storage.rb +84 -66
- data/lib/gcloud/storage/bucket.rb +87 -68
- data/lib/gcloud/storage/bucket/acl.rb +140 -105
- data/lib/gcloud/storage/credentials.rb +1 -1
- data/lib/gcloud/storage/errors.rb +8 -0
- data/lib/gcloud/storage/file.rb +138 -78
- data/lib/gcloud/storage/file/acl.rb +98 -80
- data/lib/gcloud/storage/project.rb +42 -32
- data/lib/gcloud/version.rb +1 -1
- metadata +16 -9
- data/CONTRIBUTING.md +0 -93
- data/LICENSE +0 -201
- data/README.md +0 -110
@@ -0,0 +1,46 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2015 Google Inc. All rights reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
module Gcloud
|
17
|
+
module Pubsub
|
18
|
+
class Topic
|
19
|
+
##
|
20
|
+
# Topic::List is a special case Array with additional values.
|
21
|
+
class List < DelegateClass(::Array)
|
22
|
+
##
|
23
|
+
# If not empty, indicates that there are more topics
|
24
|
+
# that match the request and this value should be passed to
|
25
|
+
# the next Gcloud::PubSub::Project#topics to continue.
|
26
|
+
attr_accessor :token
|
27
|
+
|
28
|
+
##
|
29
|
+
# Create a new Topic::List with an array of values.
|
30
|
+
def initialize arr = [], token = nil
|
31
|
+
super arr
|
32
|
+
@token = token
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# New Topic::List from a response object.
|
37
|
+
def self.from_resp resp, conn #:nodoc:
|
38
|
+
topics = Array(resp.data["topics"]).map do |gapi_object|
|
39
|
+
Topic.from_gapi gapi_object, conn
|
40
|
+
end
|
41
|
+
new topics, resp.data["nextPageToken"]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/gcloud/storage.rb
CHANGED
@@ -38,13 +38,13 @@ module Gcloud
|
|
38
38
|
#
|
39
39
|
# === Example
|
40
40
|
#
|
41
|
-
# require "
|
41
|
+
# require "gcloud/storage"
|
42
42
|
#
|
43
43
|
# storage = Gcloud.storage "my-todo-project",
|
44
44
|
# "/path/to/keyfile.json"
|
45
45
|
#
|
46
|
-
# bucket = storage.
|
47
|
-
# file = bucket.
|
46
|
+
# bucket = storage.bucket "my-bucket"
|
47
|
+
# file = bucket.file "path/to/my-file.ext"
|
48
48
|
#
|
49
49
|
def self.storage project = nil, keyfile = nil
|
50
50
|
project ||= Gcloud::Storage::Project.default_project
|
@@ -65,23 +65,24 @@ module Gcloud
|
|
65
65
|
# infrastructure to perform data operations in a cost effective manner.
|
66
66
|
#
|
67
67
|
# Gcloud's goal is to provide a API that is familiar and comfortable to
|
68
|
-
# Rubyists. Authentication is handled by Gcloud
|
68
|
+
# Rubyists. Authentication is handled by Gcloud#storage. You can provide the
|
69
69
|
# project and credential information to connect to the Storage service, or if
|
70
70
|
# you are running on Google Compute Engine this configuration is taken care
|
71
71
|
# of for you.
|
72
72
|
#
|
73
|
-
# require "
|
73
|
+
# require "gcloud"
|
74
74
|
#
|
75
|
-
#
|
76
|
-
#
|
75
|
+
# gcloud = Gcloud.new "my-todo-project",
|
76
|
+
# "/path/to/keyfile.json"
|
77
|
+
# storage = gcloud.storage
|
77
78
|
#
|
78
|
-
# bucket = storage.
|
79
|
-
# file = bucket.
|
79
|
+
# bucket = storage.bucket "my-bucket"
|
80
|
+
# file = bucket.file "path/to/my-file.ext"
|
80
81
|
#
|
81
82
|
# You can learn more about various options for connection on the
|
82
83
|
# {Authentication Guide}[link:AUTHENTICATION.md].
|
83
84
|
#
|
84
|
-
# To learn more about
|
85
|
+
# To learn more about Cloud Storage, read the
|
85
86
|
# {Google Cloud Storage Overview
|
86
87
|
# }[https://cloud.google.com/storage/docs/overview].
|
87
88
|
#
|
@@ -90,28 +91,31 @@ module Gcloud
|
|
90
91
|
# A Bucket is the container for your data. There is no limit on the number of
|
91
92
|
# buckets that you can create in a project. You can use buckets to organize
|
92
93
|
# and control access to your data. Each bucket has a unique name, which is how
|
93
|
-
# they are retrieved: (See Project#
|
94
|
+
# they are retrieved: (See Project#bucket)
|
94
95
|
#
|
95
|
-
# require "gcloud
|
96
|
+
# require "gcloud"
|
96
97
|
#
|
97
|
-
#
|
98
|
+
# gcloud = Gcloud.new
|
99
|
+
# storage = gcloud.storage
|
98
100
|
#
|
99
|
-
# bucket = storage.
|
101
|
+
# bucket = storage.bucket "my-todo-app"
|
100
102
|
#
|
101
103
|
# You can also retrieve all buckets on a project: (See Project#buckets)
|
102
104
|
#
|
103
|
-
# require "gcloud
|
105
|
+
# require "gcloud"
|
104
106
|
#
|
105
|
-
#
|
107
|
+
# gcloud = Gcloud.new
|
108
|
+
# storage = gcloud.storage
|
106
109
|
#
|
107
110
|
# all_buckets = storage.buckets
|
108
111
|
#
|
109
112
|
# If you have a significant number of buckets, you may need to paginate
|
110
113
|
# through them: (See Bucket::List#token)
|
111
114
|
#
|
112
|
-
# require "gcloud
|
115
|
+
# require "gcloud"
|
113
116
|
#
|
114
|
-
#
|
117
|
+
# gcloud = Gcloud.new
|
118
|
+
# storage = gcloud.storage
|
115
119
|
#
|
116
120
|
# all_buckets = []
|
117
121
|
# tmp_buckets = storage.buckets
|
@@ -130,9 +134,10 @@ module Gcloud
|
|
130
134
|
# A unique name is all that is needed to create a new bucket:
|
131
135
|
# (See Project#create_bucket)
|
132
136
|
#
|
133
|
-
# require "gcloud
|
137
|
+
# require "gcloud"
|
134
138
|
#
|
135
|
-
#
|
139
|
+
# gcloud = Gcloud.new
|
140
|
+
# storage = gcloud.storage
|
136
141
|
#
|
137
142
|
# bucket = storage.create_bucket "my-todo-app-attachments"
|
138
143
|
#
|
@@ -144,41 +149,45 @@ module Gcloud
|
|
144
149
|
# no limit on the number of objects that you can create in a bucket.
|
145
150
|
#
|
146
151
|
# Files are retrieved by their name, which is the path of the file in the
|
147
|
-
# bucket: (See Bucket#
|
152
|
+
# bucket: (See Bucket#file)
|
148
153
|
#
|
149
|
-
# require "gcloud
|
154
|
+
# require "gcloud"
|
150
155
|
#
|
151
|
-
#
|
156
|
+
# gcloud = Gcloud.new
|
157
|
+
# storage = gcloud.storage
|
152
158
|
#
|
153
|
-
# bucket = storage.
|
154
|
-
# file = bucket.
|
159
|
+
# bucket = storage.bucket "my-todo-app"
|
160
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
155
161
|
#
|
156
162
|
# You can also retrieve all files in a bucket: (See Bucket#files)
|
157
163
|
#
|
158
|
-
# require "gcloud
|
164
|
+
# require "gcloud"
|
159
165
|
#
|
160
|
-
#
|
166
|
+
# gcloud = Gcloud.new
|
167
|
+
# storage = gcloud.storage
|
161
168
|
#
|
162
|
-
# bucket = storage.
|
169
|
+
# bucket = storage.bucket "my-todo-app"
|
163
170
|
# all_files = bucket.files
|
164
171
|
#
|
165
172
|
# Or you can retrieve all files in a specified path:
|
166
173
|
#
|
167
|
-
# require "gcloud
|
174
|
+
# require "gcloud"
|
168
175
|
#
|
169
|
-
#
|
176
|
+
# gcloud = Gcloud.new
|
177
|
+
# storage = gcloud.storage
|
170
178
|
#
|
171
|
-
# bucket = storage.
|
179
|
+
# bucket = storage.bucket "my-todo-app"
|
172
180
|
# avatar_files = bucket.files prefix: "avatars/"
|
173
181
|
#
|
174
182
|
# If you have a significant number of files, you may need to paginate through
|
175
183
|
# them: (See File::List#token)
|
176
184
|
#
|
177
|
-
# require "gcloud
|
185
|
+
# require "gcloud"
|
178
186
|
#
|
179
|
-
#
|
187
|
+
# gcloud = Gcloud.new
|
188
|
+
# storage = gcloud.storage
|
180
189
|
#
|
181
|
-
# bucket = storage.
|
190
|
+
# bucket = storage.bucket "my-todo-app"
|
182
191
|
#
|
183
192
|
# all_files = []
|
184
193
|
# tmp_files = bucket.files
|
@@ -198,11 +207,12 @@ module Gcloud
|
|
198
207
|
# file system, and the name/path that the file should be stored in the bucket.
|
199
208
|
# (See Bucket#create_file)
|
200
209
|
#
|
201
|
-
# require "gcloud
|
210
|
+
# require "gcloud"
|
202
211
|
#
|
203
|
-
#
|
212
|
+
# gcloud = Gcloud.new
|
213
|
+
# storage = gcloud.storage
|
204
214
|
#
|
205
|
-
# bucket = storage.
|
215
|
+
# bucket = storage.bucket "my-todo-app"
|
206
216
|
# bucket.create_file "/var/todo-app/avatars/heidi/400x400.png",
|
207
217
|
# "avatars/heidi/400x400.png"
|
208
218
|
#
|
@@ -210,12 +220,13 @@ module Gcloud
|
|
210
220
|
#
|
211
221
|
# Files can be downloaded to the local file system. (See File#download)
|
212
222
|
#
|
213
|
-
# require "gcloud
|
223
|
+
# require "gcloud"
|
214
224
|
#
|
215
|
-
#
|
225
|
+
# gcloud = Gcloud.new
|
226
|
+
# storage = gcloud.storage
|
216
227
|
#
|
217
|
-
# bucket = storage.
|
218
|
-
# file = bucket.
|
228
|
+
# bucket = storage.bucket "my-todo-app"
|
229
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
219
230
|
# file.download "/var/todo-app/avatars/heidi/400x400.png"
|
220
231
|
#
|
221
232
|
# == Using Signed URLs
|
@@ -224,12 +235,13 @@ module Gcloud
|
|
224
235
|
# period of time. This URL uses a cryptographic signature
|
225
236
|
# of your credentials to access the file. (See File#signed_url)
|
226
237
|
#
|
227
|
-
# require "gcloud
|
238
|
+
# require "gcloud"
|
228
239
|
#
|
229
|
-
#
|
240
|
+
# gcloud = Gcloud.new
|
241
|
+
# storage = gcloud.storage
|
230
242
|
#
|
231
|
-
# bucket = storage.
|
232
|
-
# file = bucket.
|
243
|
+
# bucket = storage.bucket "my-todo-app"
|
244
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
233
245
|
# shared_url = file.signed_url method: "GET",
|
234
246
|
# expires: 300 # 5 minutes from now
|
235
247
|
#
|
@@ -245,11 +257,12 @@ module Gcloud
|
|
245
257
|
# Access to a bucket can be granted to a user by appending +"user-"+ to the
|
246
258
|
# email address:
|
247
259
|
#
|
248
|
-
# require "gcloud
|
260
|
+
# require "gcloud"
|
249
261
|
#
|
250
|
-
#
|
262
|
+
# gcloud = Gcloud.new
|
263
|
+
# storage = gcloud.storage
|
251
264
|
#
|
252
|
-
# bucket = storage.
|
265
|
+
# bucket = storage.bucket "my-todo-app"
|
253
266
|
#
|
254
267
|
# email = "heidi@example.net"
|
255
268
|
# bucket.acl.add_reader "user-#{email}"
|
@@ -257,22 +270,24 @@ module Gcloud
|
|
257
270
|
# Access to a bucket can be granted to a group by appending +"group-"+ to the
|
258
271
|
# email address:
|
259
272
|
#
|
260
|
-
# require "gcloud
|
273
|
+
# require "gcloud"
|
261
274
|
#
|
262
|
-
#
|
275
|
+
# gcloud = Gcloud.new
|
276
|
+
# storage = gcloud.storage
|
263
277
|
#
|
264
|
-
# bucket = storage.
|
278
|
+
# bucket = storage.bucket "my-todo-app"
|
265
279
|
#
|
266
280
|
# email = "authors@example.net"
|
267
281
|
# bucket.acl.add_reader "group-#{email}"
|
268
282
|
#
|
269
283
|
# Access to a bucket can also be granted to a predefined list of permissions:
|
270
284
|
#
|
271
|
-
# require "gcloud
|
285
|
+
# require "gcloud"
|
272
286
|
#
|
273
|
-
#
|
287
|
+
# gcloud = Gcloud.new
|
288
|
+
# storage = gcloud.storage
|
274
289
|
#
|
275
|
-
# bucket = storage.
|
290
|
+
# bucket = storage.bucket "my-todo-app"
|
276
291
|
#
|
277
292
|
# bucket.acl.public!
|
278
293
|
#
|
@@ -285,12 +300,13 @@ module Gcloud
|
|
285
300
|
# Access to a file can be granted to a user by appending +"user-"+ to the
|
286
301
|
# email address:
|
287
302
|
#
|
288
|
-
# require "gcloud
|
303
|
+
# require "gcloud"
|
289
304
|
#
|
290
|
-
#
|
305
|
+
# gcloud = Gcloud.new
|
306
|
+
# storage = gcloud.storage
|
291
307
|
#
|
292
|
-
# bucket = storage.
|
293
|
-
# file = bucket.
|
308
|
+
# bucket = storage.bucket "my-todo-app"
|
309
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
294
310
|
#
|
295
311
|
# email = "heidi@example.net"
|
296
312
|
# file.acl.add_reader "user-#{email}"
|
@@ -298,24 +314,26 @@ module Gcloud
|
|
298
314
|
# Access to a file can be granted to a group by appending +"group-"+ to the
|
299
315
|
# email address:
|
300
316
|
#
|
301
|
-
# require "gcloud
|
317
|
+
# require "gcloud"
|
302
318
|
#
|
303
|
-
#
|
319
|
+
# gcloud = Gcloud.new
|
320
|
+
# storage = gcloud.storage
|
304
321
|
#
|
305
|
-
# bucket = storage.
|
306
|
-
# file = bucket.
|
322
|
+
# bucket = storage.bucket "my-todo-app"
|
323
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
307
324
|
#
|
308
325
|
# email = "authors@example.net"
|
309
326
|
# file.acl.add_reader "group-#{email}"
|
310
327
|
#
|
311
328
|
# Access to a file can also be granted to a predefined list of permissions:
|
312
329
|
#
|
313
|
-
# require "gcloud
|
330
|
+
# require "gcloud"
|
314
331
|
#
|
315
|
-
#
|
332
|
+
# gcloud = Gcloud.new
|
333
|
+
# storage = gcloud.storage
|
316
334
|
#
|
317
|
-
# bucket = storage.
|
318
|
-
# file = bucket.
|
335
|
+
# bucket = storage.bucket "my-todo-app"
|
336
|
+
# file = bucket.file "avatars/heidi/400x400.png"
|
319
337
|
#
|
320
338
|
# file.acl.public!
|
321
339
|
#
|
@@ -24,12 +24,13 @@ module Gcloud
|
|
24
24
|
#
|
25
25
|
# Represents a Storage bucket. Belongs to a Project and has many Files.
|
26
26
|
#
|
27
|
-
# require "
|
27
|
+
# require "gcloud"
|
28
28
|
#
|
29
|
-
#
|
29
|
+
# gcloud = Gcloud.new
|
30
|
+
# storage = gcloud.storage
|
30
31
|
#
|
31
|
-
# bucket = storage.
|
32
|
-
# file = bucket.
|
32
|
+
# bucket = storage.bucket "my-bucket"
|
33
|
+
# file = bucket.file "path/to/my-file.ext"
|
33
34
|
#
|
34
35
|
class Bucket
|
35
36
|
##
|
@@ -96,8 +97,8 @@ module Gcloud
|
|
96
97
|
# === Parameters
|
97
98
|
#
|
98
99
|
# +options+::
|
99
|
-
# An optional Hash for controlling additional
|
100
|
-
#
|
100
|
+
# An optional Hash for controlling additional behavior. (+Hash+)
|
101
|
+
# <code>options[:retries]</code>::
|
101
102
|
# The number of times the API call should be retried.
|
102
103
|
# Default is Gcloud::Backoff.retries. (+Integer+)
|
103
104
|
#
|
@@ -107,22 +108,24 @@ module Gcloud
|
|
107
108
|
#
|
108
109
|
# === Examples
|
109
110
|
#
|
110
|
-
# require "gcloud
|
111
|
+
# require "gcloud"
|
111
112
|
#
|
112
|
-
#
|
113
|
+
# gcloud = Gcloud.new
|
114
|
+
# storage = gcloud.storage
|
113
115
|
#
|
114
|
-
# bucket = storage.
|
116
|
+
# bucket = storage.bucket "my-bucket"
|
115
117
|
# bucket.delete
|
116
118
|
#
|
117
119
|
# The API call to delete the bucket may be retried under certain
|
118
120
|
# conditions. See Gcloud::Backoff to control this behavior, or
|
119
121
|
# specify the wanted behavior in the call:
|
120
122
|
#
|
121
|
-
# require "gcloud
|
123
|
+
# require "gcloud"
|
122
124
|
#
|
123
|
-
#
|
125
|
+
# gcloud = Gcloud.new
|
126
|
+
# storage = gcloud.storage
|
124
127
|
#
|
125
|
-
# bucket = storage.
|
128
|
+
# bucket = storage.bucket "my-bucket"
|
126
129
|
# bucket.delete retries: 5
|
127
130
|
#
|
128
131
|
def delete options = {}
|
@@ -131,7 +134,7 @@ module Gcloud
|
|
131
134
|
if resp.success?
|
132
135
|
true
|
133
136
|
else
|
134
|
-
ApiError.from_response(resp)
|
137
|
+
fail ApiError.from_response(resp)
|
135
138
|
end
|
136
139
|
end
|
137
140
|
|
@@ -141,37 +144,38 @@ module Gcloud
|
|
141
144
|
# === Parameters
|
142
145
|
#
|
143
146
|
# +options+::
|
144
|
-
# An optional Hash for controlling additional
|
145
|
-
#
|
147
|
+
# An optional Hash for controlling additional behavior. (+Hash+)
|
148
|
+
# <code>options[:prefix]</code>::
|
146
149
|
# Filter results to files whose names begin with this prefix.
|
147
150
|
# (+String+)
|
148
|
-
#
|
151
|
+
# <code>options[:token]</code>::
|
149
152
|
# A previously-returned page token representing part of the larger set
|
150
153
|
# of results to view. (+String+)
|
151
|
-
#
|
154
|
+
# <code>options[:max]</code>::
|
152
155
|
# Maximum number of items plus prefixes to return. As duplicate prefixes
|
153
156
|
# are omitted, fewer total results may be returned than requested.
|
154
157
|
# The default value of this parameter is 1,000 items. (+Integer+)
|
155
|
-
#
|
158
|
+
# <code>options[:versions]</code>::
|
156
159
|
# If +true+, lists all versions of an object as distinct results.
|
157
160
|
# The default is +false+. For more information, see
|
158
161
|
# {Object Versioning
|
159
162
|
# }[https://cloud.google.com/storage/docs/object-versioning].
|
160
163
|
# (+Boolean+)
|
161
|
-
#
|
164
|
+
# <code>options[:max]</code>::
|
162
165
|
# Maximum number of buckets to return. (+Integer+)
|
163
166
|
#
|
164
167
|
# === Returns
|
165
168
|
#
|
166
|
-
# Array of Gcloud::
|
169
|
+
# Array of Gcloud::Storage::File (Gcloud::Storage::File::List)
|
167
170
|
#
|
168
171
|
# === Examples
|
169
172
|
#
|
170
|
-
# require "gcloud
|
173
|
+
# require "gcloud"
|
171
174
|
#
|
172
|
-
#
|
175
|
+
# gcloud = Gcloud.new
|
176
|
+
# storage = gcloud.storage
|
173
177
|
#
|
174
|
-
# bucket = storage.
|
178
|
+
# bucket = storage.bucket "my-bucket"
|
175
179
|
# files = bucket.files
|
176
180
|
# files.each do |file|
|
177
181
|
# puts file.name
|
@@ -180,11 +184,12 @@ module Gcloud
|
|
180
184
|
# If you have a significant number of files, you may need to paginate
|
181
185
|
# through them: (See File::List#token)
|
182
186
|
#
|
183
|
-
# require "gcloud
|
187
|
+
# require "gcloud"
|
184
188
|
#
|
185
|
-
#
|
189
|
+
# gcloud = Gcloud.new
|
190
|
+
# storage = gcloud.storage
|
186
191
|
#
|
187
|
-
# bucket = storage.
|
192
|
+
# bucket = storage.bucket "my-bucket"
|
188
193
|
#
|
189
194
|
# all_files = []
|
190
195
|
# tmp_files = bucket.files
|
@@ -207,6 +212,7 @@ module Gcloud
|
|
207
212
|
fail ApiError.from_response(resp)
|
208
213
|
end
|
209
214
|
end
|
215
|
+
alias_method :find_files, :files
|
210
216
|
|
211
217
|
##
|
212
218
|
# Retrieves a file matching the path.
|
@@ -218,20 +224,21 @@ module Gcloud
|
|
218
224
|
#
|
219
225
|
# === Returns
|
220
226
|
#
|
221
|
-
# Gcloud::
|
227
|
+
# Gcloud::Storage::File or nil if file does not exist
|
222
228
|
#
|
223
229
|
# === Example
|
224
230
|
#
|
225
|
-
# require "gcloud
|
231
|
+
# require "gcloud"
|
226
232
|
#
|
227
|
-
#
|
233
|
+
# gcloud = Gcloud.new
|
234
|
+
# storage = gcloud.storage
|
228
235
|
#
|
229
|
-
# bucket = storage.
|
236
|
+
# bucket = storage.bucket "my-bucket"
|
230
237
|
#
|
231
|
-
# file = bucket.
|
238
|
+
# file = bucket.file "path/to/my-file.ext"
|
232
239
|
# puts file.name
|
233
240
|
#
|
234
|
-
def
|
241
|
+
def file path, options = {}
|
235
242
|
ensure_connection!
|
236
243
|
resp = connection.get_file name, path, options
|
237
244
|
if resp.success?
|
@@ -240,6 +247,7 @@ module Gcloud
|
|
240
247
|
fail ApiError.from_response(resp)
|
241
248
|
end
|
242
249
|
end
|
250
|
+
alias_method :find_file, :file
|
243
251
|
|
244
252
|
##
|
245
253
|
# Create a new File object by providing a path to a local file to upload
|
@@ -252,46 +260,48 @@ module Gcloud
|
|
252
260
|
# +path+::
|
253
261
|
# Path to store the file in Google Cloud Storage. (+String+)
|
254
262
|
# +options+::
|
255
|
-
# An optional Hash for controlling additional
|
256
|
-
#
|
263
|
+
# An optional Hash for controlling additional behavior. (+Hash+)
|
264
|
+
# <code>options[:acl]</code>::
|
257
265
|
# A predefined set of access controls to apply to this file.
|
258
266
|
# (+String+)
|
259
267
|
#
|
260
268
|
# Acceptable values are:
|
261
269
|
# * +auth+, +auth_read+, +authenticated+, +authenticated_read+,
|
262
|
-
# +authenticatedRead
|
270
|
+
# +authenticatedRead+ - File owner gets OWNER access, and
|
263
271
|
# allAuthenticatedUsers get READER access.
|
264
|
-
# * +owner_full+, +bucketOwnerFullControl
|
272
|
+
# * +owner_full+, +bucketOwnerFullControl+ - File owner gets OWNER
|
265
273
|
# access, and project team owners get OWNER access.
|
266
|
-
# * +owner_read+, +bucketOwnerRead
|
274
|
+
# * +owner_read+, +bucketOwnerRead+ - File owner gets OWNER access, and
|
267
275
|
# project team owners get READER access.
|
268
|
-
# * +private
|
269
|
-
# * +project_private+, +projectPrivate
|
276
|
+
# * +private+ - File owner gets OWNER access.
|
277
|
+
# * +project_private+, +projectPrivate+ - File owner gets OWNER access,
|
270
278
|
# and project team members get access according to their roles.
|
271
|
-
# * +public+, +public_read+, +publicRead
|
279
|
+
# * +public+, +public_read+, +publicRead+ - File owner gets OWNER
|
272
280
|
# access, and allUsers get READER access.
|
273
281
|
#
|
274
282
|
# === Returns
|
275
283
|
#
|
276
|
-
# Gcloud::
|
284
|
+
# Gcloud::Storage::File
|
277
285
|
#
|
278
286
|
# === Examples
|
279
287
|
#
|
280
|
-
# require "gcloud
|
288
|
+
# require "gcloud"
|
281
289
|
#
|
282
|
-
#
|
290
|
+
# gcloud = Gcloud.new
|
291
|
+
# storage = gcloud.storage
|
283
292
|
#
|
284
|
-
# bucket = storage.
|
293
|
+
# bucket = storage.bucket "my-bucket"
|
285
294
|
#
|
286
295
|
# bucket.create_file "path/to/local.file.ext"
|
287
296
|
#
|
288
297
|
# Additionally, a destination path can be specified.
|
289
298
|
#
|
290
|
-
# require "gcloud
|
299
|
+
# require "gcloud"
|
291
300
|
#
|
292
|
-
#
|
301
|
+
# gcloud = Gcloud.new
|
302
|
+
# storage = gcloud.storage
|
293
303
|
#
|
294
|
-
# bucket = storage.
|
304
|
+
# bucket = storage.bucket "my-bucket"
|
295
305
|
#
|
296
306
|
# bucket.create_file "path/to/local.file.ext",
|
297
307
|
# "destination/path/file.ext"
|
@@ -302,11 +312,12 @@ module Gcloud
|
|
302
312
|
# by 265KB then it will be lowered to the nearest acceptible
|
303
313
|
# value.
|
304
314
|
#
|
305
|
-
# require "gcloud
|
315
|
+
# require "gcloud"
|
306
316
|
#
|
307
|
-
#
|
317
|
+
# gcloud = Gcloud.new
|
318
|
+
# storage = gcloud.storage
|
308
319
|
#
|
309
|
-
# bucket = storage.
|
320
|
+
# bucket = storage.bucket "my-bucket"
|
310
321
|
#
|
311
322
|
# bucket.create_file "path/to/local.file.ext",
|
312
323
|
# "destination/path/file.ext",
|
@@ -326,6 +337,8 @@ module Gcloud
|
|
326
337
|
upload_multipart file, path, options
|
327
338
|
end
|
328
339
|
end
|
340
|
+
alias_method :upload_file, :create_file
|
341
|
+
alias_method :new_file, :create_file
|
329
342
|
|
330
343
|
##
|
331
344
|
# The Bucket::Acl instance used to control access to the bucket.
|
@@ -342,11 +355,12 @@ module Gcloud
|
|
342
355
|
# Access to a bucket can be granted to a user by appending +"user-"+ to
|
343
356
|
# the email address:
|
344
357
|
#
|
345
|
-
# require "gcloud
|
358
|
+
# require "gcloud"
|
346
359
|
#
|
347
|
-
#
|
360
|
+
# gcloud = Gcloud.new
|
361
|
+
# storage = gcloud.storage
|
348
362
|
#
|
349
|
-
# bucket = storage.
|
363
|
+
# bucket = storage.bucket "my-todo-app"
|
350
364
|
#
|
351
365
|
# email = "heidi@example.net"
|
352
366
|
# bucket.acl.add_reader "user-#{email}"
|
@@ -354,11 +368,12 @@ module Gcloud
|
|
354
368
|
# Access to a bucket can be granted to a group by appending +"group-"+ to
|
355
369
|
# the email address:
|
356
370
|
#
|
357
|
-
# require "gcloud
|
371
|
+
# require "gcloud"
|
358
372
|
#
|
359
|
-
#
|
373
|
+
# gcloud = Gcloud.new
|
374
|
+
# storage = gcloud.storage
|
360
375
|
#
|
361
|
-
# bucket = storage.
|
376
|
+
# bucket = storage.bucket "my-todo-app"
|
362
377
|
#
|
363
378
|
# email = "authors@example.net"
|
364
379
|
# bucket.acl.add_reader "group-#{email}"
|
@@ -366,11 +381,12 @@ module Gcloud
|
|
366
381
|
# Access to a bucket can also be granted to a predefined list of
|
367
382
|
# permissions:
|
368
383
|
#
|
369
|
-
# require "gcloud
|
384
|
+
# require "gcloud"
|
370
385
|
#
|
371
|
-
#
|
386
|
+
# gcloud = Gcloud.new
|
387
|
+
# storage = gcloud.storage
|
372
388
|
#
|
373
|
-
# bucket = storage.
|
389
|
+
# bucket = storage.bucket "my-todo-app"
|
374
390
|
#
|
375
391
|
# bucket.acl.public!
|
376
392
|
#
|
@@ -394,11 +410,12 @@ module Gcloud
|
|
394
410
|
# Access to a bucket's files can be granted to a user by appending
|
395
411
|
# +"user-"+ to the email address:
|
396
412
|
#
|
397
|
-
# require "gcloud
|
413
|
+
# require "gcloud"
|
398
414
|
#
|
399
|
-
#
|
415
|
+
# gcloud = Gcloud.new
|
416
|
+
# storage = gcloud.storage
|
400
417
|
#
|
401
|
-
# bucket = storage.
|
418
|
+
# bucket = storage.bucket "my-todo-app"
|
402
419
|
#
|
403
420
|
# email = "heidi@example.net"
|
404
421
|
# bucket.default_acl.add_reader "user-#{email}"
|
@@ -406,11 +423,12 @@ module Gcloud
|
|
406
423
|
# Access to a bucket's files can be granted to a group by appending
|
407
424
|
# +"group-"+ to the email address:
|
408
425
|
#
|
409
|
-
# require "gcloud
|
426
|
+
# require "gcloud"
|
410
427
|
#
|
411
|
-
#
|
428
|
+
# gcloud = Gcloud.new
|
429
|
+
# storage = gcloud.storage
|
412
430
|
#
|
413
|
-
# bucket = storage.
|
431
|
+
# bucket = storage.bucket "my-todo-app"
|
414
432
|
#
|
415
433
|
# email = "authors@example.net"
|
416
434
|
# bucket.default_acl.add_reader "group-#{email}"
|
@@ -418,11 +436,12 @@ module Gcloud
|
|
418
436
|
# Access to a bucket's files can also be granted to a predefined list of
|
419
437
|
# permissions:
|
420
438
|
#
|
421
|
-
# require "gcloud
|
439
|
+
# require "gcloud"
|
422
440
|
#
|
423
|
-
#
|
441
|
+
# gcloud = Gcloud.new
|
442
|
+
# storage = gcloud.storage
|
424
443
|
#
|
425
|
-
# bucket = storage.
|
444
|
+
# bucket = storage.bucket "my-todo-app"
|
426
445
|
#
|
427
446
|
# bucket.default_acl.public!
|
428
447
|
def default_acl
|