gcloud 0.12.2 → 0.20.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.
Files changed (169) hide show
  1. checksums.yaml +5 -13
  2. data/lib/gcloud.rb +27 -456
  3. data/lib/gcloud/bigquery.rb +2 -382
  4. data/lib/gcloud/datastore.rb +2 -576
  5. data/lib/gcloud/dns.rb +2 -321
  6. data/lib/gcloud/logging.rb +1 -322
  7. data/lib/gcloud/pubsub.rb +2 -476
  8. data/lib/gcloud/resource_manager.rb +2 -273
  9. data/lib/gcloud/storage.rb +2 -440
  10. data/lib/gcloud/translate.rb +1 -250
  11. data/lib/gcloud/version.rb +2 -2
  12. data/lib/gcloud/vision.rb +1 -501
  13. metadata +36 -332
  14. data/AUTHENTICATION.md +0 -75
  15. data/CHANGELOG.md +0 -382
  16. data/OVERVIEW.md +0 -259
  17. data/lib/gcloud/backoff.rb +0 -150
  18. data/lib/gcloud/bigquery/copy_job.rb +0 -97
  19. data/lib/gcloud/bigquery/credentials.rb +0 -29
  20. data/lib/gcloud/bigquery/data.rb +0 -239
  21. data/lib/gcloud/bigquery/dataset.rb +0 -753
  22. data/lib/gcloud/bigquery/dataset/access.rb +0 -507
  23. data/lib/gcloud/bigquery/dataset/list.rb +0 -169
  24. data/lib/gcloud/bigquery/extract_job.rb +0 -117
  25. data/lib/gcloud/bigquery/insert_response.rb +0 -81
  26. data/lib/gcloud/bigquery/job.rb +0 -299
  27. data/lib/gcloud/bigquery/job/list.rb +0 -172
  28. data/lib/gcloud/bigquery/load_job.rb +0 -202
  29. data/lib/gcloud/bigquery/project.rb +0 -475
  30. data/lib/gcloud/bigquery/query_data.rb +0 -234
  31. data/lib/gcloud/bigquery/query_job.rb +0 -137
  32. data/lib/gcloud/bigquery/schema.rb +0 -359
  33. data/lib/gcloud/bigquery/service.rb +0 -506
  34. data/lib/gcloud/bigquery/table.rb +0 -1141
  35. data/lib/gcloud/bigquery/table/list.rb +0 -180
  36. data/lib/gcloud/bigquery/view.rb +0 -475
  37. data/lib/gcloud/credentials.rb +0 -129
  38. data/lib/gcloud/datastore/commit.rb +0 -148
  39. data/lib/gcloud/datastore/credentials.rb +0 -35
  40. data/lib/gcloud/datastore/cursor.rb +0 -76
  41. data/lib/gcloud/datastore/dataset.rb +0 -660
  42. data/lib/gcloud/datastore/dataset/lookup_results.rb +0 -219
  43. data/lib/gcloud/datastore/dataset/query_results.rb +0 -386
  44. data/lib/gcloud/datastore/entity.rb +0 -449
  45. data/lib/gcloud/datastore/errors.rb +0 -41
  46. data/lib/gcloud/datastore/gql_query.rb +0 -211
  47. data/lib/gcloud/datastore/grpc_utils.rb +0 -132
  48. data/lib/gcloud/datastore/key.rb +0 -281
  49. data/lib/gcloud/datastore/properties.rb +0 -128
  50. data/lib/gcloud/datastore/query.rb +0 -348
  51. data/lib/gcloud/datastore/service.rb +0 -167
  52. data/lib/gcloud/datastore/transaction.rb +0 -362
  53. data/lib/gcloud/dns/change.rb +0 -158
  54. data/lib/gcloud/dns/change/list.rb +0 -173
  55. data/lib/gcloud/dns/credentials.rb +0 -29
  56. data/lib/gcloud/dns/importer.rb +0 -183
  57. data/lib/gcloud/dns/project.rb +0 -247
  58. data/lib/gcloud/dns/record.rb +0 -170
  59. data/lib/gcloud/dns/record/list.rb +0 -174
  60. data/lib/gcloud/dns/service.rb +0 -167
  61. data/lib/gcloud/dns/zone.rb +0 -759
  62. data/lib/gcloud/dns/zone/list.rb +0 -168
  63. data/lib/gcloud/dns/zone/transaction.rb +0 -176
  64. data/lib/gcloud/errors.rb +0 -206
  65. data/lib/gcloud/gce.rb +0 -56
  66. data/lib/gcloud/grpc_utils.rb +0 -87
  67. data/lib/gcloud/logging/credentials.rb +0 -29
  68. data/lib/gcloud/logging/entry.rb +0 -465
  69. data/lib/gcloud/logging/entry/http_request.rb +0 -141
  70. data/lib/gcloud/logging/entry/list.rb +0 -177
  71. data/lib/gcloud/logging/entry/operation.rb +0 -90
  72. data/lib/gcloud/logging/logger.rb +0 -307
  73. data/lib/gcloud/logging/metric.rb +0 -169
  74. data/lib/gcloud/logging/metric/list.rb +0 -172
  75. data/lib/gcloud/logging/project.rb +0 -642
  76. data/lib/gcloud/logging/resource.rb +0 -84
  77. data/lib/gcloud/logging/resource_descriptor.rb +0 -137
  78. data/lib/gcloud/logging/resource_descriptor/list.rb +0 -174
  79. data/lib/gcloud/logging/service.rb +0 -267
  80. data/lib/gcloud/logging/sink.rb +0 -227
  81. data/lib/gcloud/logging/sink/list.rb +0 -171
  82. data/lib/gcloud/pubsub/credentials.rb +0 -29
  83. data/lib/gcloud/pubsub/message.rb +0 -94
  84. data/lib/gcloud/pubsub/policy.rb +0 -204
  85. data/lib/gcloud/pubsub/project.rb +0 -482
  86. data/lib/gcloud/pubsub/received_message.rb +0 -160
  87. data/lib/gcloud/pubsub/service.rb +0 -334
  88. data/lib/gcloud/pubsub/subscription.rb +0 -565
  89. data/lib/gcloud/pubsub/subscription/list.rb +0 -208
  90. data/lib/gcloud/pubsub/topic.rb +0 -511
  91. data/lib/gcloud/pubsub/topic/list.rb +0 -174
  92. data/lib/gcloud/pubsub/topic/publisher.rb +0 -85
  93. data/lib/gcloud/resource_manager/credentials.rb +0 -30
  94. data/lib/gcloud/resource_manager/manager.rb +0 -266
  95. data/lib/gcloud/resource_manager/policy.rb +0 -211
  96. data/lib/gcloud/resource_manager/project.rb +0 -484
  97. data/lib/gcloud/resource_manager/project/list.rb +0 -167
  98. data/lib/gcloud/resource_manager/project/updater.rb +0 -130
  99. data/lib/gcloud/resource_manager/service.rb +0 -127
  100. data/lib/gcloud/storage/bucket.rb +0 -775
  101. data/lib/gcloud/storage/bucket/acl.rb +0 -810
  102. data/lib/gcloud/storage/bucket/cors.rb +0 -153
  103. data/lib/gcloud/storage/bucket/list.rb +0 -172
  104. data/lib/gcloud/storage/credentials.rb +0 -29
  105. data/lib/gcloud/storage/errors.rb +0 -65
  106. data/lib/gcloud/storage/file.rb +0 -842
  107. data/lib/gcloud/storage/file/acl.rb +0 -425
  108. data/lib/gcloud/storage/file/list.rb +0 -191
  109. data/lib/gcloud/storage/file/verifier.rb +0 -67
  110. data/lib/gcloud/storage/project.rb +0 -316
  111. data/lib/gcloud/storage/service.rb +0 -347
  112. data/lib/gcloud/translate/api.rb +0 -241
  113. data/lib/gcloud/translate/detection.rb +0 -137
  114. data/lib/gcloud/translate/language.rb +0 -69
  115. data/lib/gcloud/translate/service.rb +0 -80
  116. data/lib/gcloud/translate/translation.rb +0 -112
  117. data/lib/gcloud/vision/annotate.rb +0 -224
  118. data/lib/gcloud/vision/annotation.rb +0 -455
  119. data/lib/gcloud/vision/annotation/entity.rb +0 -234
  120. data/lib/gcloud/vision/annotation/face.rb +0 -1750
  121. data/lib/gcloud/vision/annotation/properties.rb +0 -245
  122. data/lib/gcloud/vision/annotation/safe_search.rb +0 -161
  123. data/lib/gcloud/vision/annotation/text.rb +0 -236
  124. data/lib/gcloud/vision/annotation/vertex.rb +0 -108
  125. data/lib/gcloud/vision/credentials.rb +0 -29
  126. data/lib/gcloud/vision/image.rb +0 -590
  127. data/lib/gcloud/vision/location.rb +0 -115
  128. data/lib/gcloud/vision/project.rb +0 -278
  129. data/lib/gcloud/vision/service.rb +0 -66
  130. data/lib/google/api/annotations.rb +0 -14
  131. data/lib/google/api/http.rb +0 -30
  132. data/lib/google/api/label.rb +0 -24
  133. data/lib/google/api/monitored_resource.rb +0 -25
  134. data/lib/google/datastore/v1beta3/datastore.rb +0 -115
  135. data/lib/google/datastore/v1beta3/datastore_services.rb +0 -33
  136. data/lib/google/datastore/v1beta3/entity.rb +0 -63
  137. data/lib/google/datastore/v1beta3/query.rb +0 -128
  138. data/lib/google/devtools/cloudtrace/v1/trace.rb +0 -78
  139. data/lib/google/devtools/cloudtrace/v1/trace_services.rb +0 -32
  140. data/lib/google/example/library/v1/library.rb +0 -91
  141. data/lib/google/example/library/v1/library_services.rb +0 -40
  142. data/lib/google/iam/v1/iam_policy.rb +0 -33
  143. data/lib/google/iam/v1/iam_policy_services.rb +0 -30
  144. data/lib/google/iam/v1/policy.rb +0 -25
  145. data/lib/google/logging/type/http_request.rb +0 -28
  146. data/lib/google/logging/type/log_severity.rb +0 -27
  147. data/lib/google/logging/v2/log_entry.rb +0 -44
  148. data/lib/google/logging/v2/logging.rb +0 -56
  149. data/lib/google/logging/v2/logging_config.rb +0 -59
  150. data/lib/google/logging/v2/logging_config_services.rb +0 -32
  151. data/lib/google/logging/v2/logging_metrics.rb +0 -51
  152. data/lib/google/logging/v2/logging_metrics_services.rb +0 -32
  153. data/lib/google/logging/v2/logging_services.rb +0 -31
  154. data/lib/google/longrunning/operations.rb +0 -50
  155. data/lib/google/longrunning/operations_services.rb +0 -29
  156. data/lib/google/protobuf/descriptor.rb +0 -0
  157. data/lib/google/pubsub/v1/pubsub.rb +0 -129
  158. data/lib/google/pubsub/v1/pubsub_services.rb +0 -56
  159. data/lib/google/pubsub/v1beta2/pubsub.rb +0 -126
  160. data/lib/google/pubsub/v1beta2/pubsub_services.rb +0 -56
  161. data/lib/google/rpc/code.rb +0 -32
  162. data/lib/google/rpc/error_details.rb +0 -61
  163. data/lib/google/rpc/status.rb +0 -19
  164. data/lib/google/type/color.rb +0 -20
  165. data/lib/google/type/date.rb +0 -18
  166. data/lib/google/type/dayofweek.rb +0 -23
  167. data/lib/google/type/latlng.rb +0 -17
  168. data/lib/google/type/money.rb +0 -18
  169. data/lib/google/type/timeofday.rb +0 -19
@@ -1,810 +0,0 @@
1
- # Copyright 2015 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
- module Gcloud
17
- module Storage
18
- class Bucket
19
- ##
20
- # # Bucket Access Control List
21
- #
22
- # Represents a Bucket's Access Control List.
23
- #
24
- # @example
25
- # require "gcloud"
26
- #
27
- # gcloud = Gcloud.new
28
- # storage = gcloud.storage
29
- #
30
- # bucket = storage.bucket "my-bucket"
31
- #
32
- # bucket.acl.readers.each { |reader| puts reader }
33
- #
34
- class Acl
35
- # @private
36
- RULES = { "authenticatedRead" => "authenticatedRead",
37
- "auth" => "authenticatedRead",
38
- "auth_read" => "authenticatedRead",
39
- "authenticated" => "authenticatedRead",
40
- "authenticated_read" => "authenticatedRead",
41
- "private" => "private",
42
- "projectPrivate" => "projectPrivate",
43
- "proj_private" => "projectPrivate",
44
- "project_private" => "projectPrivate",
45
- "publicRead" => "publicRead",
46
- "public" => "publicRead",
47
- "public_read" => "publicRead",
48
- "publicReadWrite" => "publicReadWrite",
49
- "public_write" => "publicReadWrite" }
50
-
51
- ##
52
- # @private Initialized a new Acl object.
53
- # Must provide a valid Bucket object.
54
- def initialize bucket
55
- @bucket = bucket.name
56
- @service = bucket.service
57
- @owners = nil
58
- @writers = nil
59
- @readers = nil
60
- end
61
-
62
- ##
63
- # Reloads all Access Control List data for the bucket.
64
- #
65
- # @example
66
- # require "gcloud"
67
- #
68
- # gcloud = Gcloud.new
69
- # storage = gcloud.storage
70
- #
71
- # bucket = storage.bucket "my-bucket"
72
- #
73
- # bucket.acl.reload!
74
- #
75
- def reload!
76
- gapi = @service.list_bucket_acls @bucket
77
- acls = Array(gapi.items)
78
- @owners = entities_from_acls acls, "OWNER"
79
- @writers = entities_from_acls acls, "WRITER"
80
- @readers = entities_from_acls acls, "READER"
81
- end
82
- alias_method :refresh!, :reload!
83
-
84
- ##
85
- # Lists the owners of the bucket.
86
- #
87
- # @return [Array<String>]
88
- #
89
- # @example
90
- # require "gcloud"
91
- #
92
- # gcloud = Gcloud.new
93
- # storage = gcloud.storage
94
- #
95
- # bucket = storage.bucket "my-bucket"
96
- #
97
- # bucket.acl.owners.each { |owner| puts owner }
98
- #
99
- def owners
100
- reload! if @owners.nil?
101
- @owners
102
- end
103
-
104
- ##
105
- # Lists the owners of the bucket.
106
- #
107
- # @return [Array<String>]
108
- #
109
- # @example
110
- # require "gcloud"
111
- #
112
- # gcloud = Gcloud.new
113
- # storage = gcloud.storage
114
- #
115
- # bucket = storage.bucket "my-bucket"
116
- #
117
- # bucket.acl.writers.each { |writer| puts writer }
118
- #
119
- def writers
120
- reload! if @writers.nil?
121
- @writers
122
- end
123
-
124
- ##
125
- # Lists the readers of the bucket.
126
- #
127
- # @return [Array<String>]
128
- #
129
- # @example
130
- # require "gcloud"
131
- #
132
- # gcloud = Gcloud.new
133
- # storage = gcloud.storage
134
- #
135
- # bucket = storage.bucket "my-bucket"
136
- #
137
- # bucket.acl.readers.each { |reader| puts reader }
138
- #
139
- def readers
140
- reload! if @readers.nil?
141
- @readers
142
- end
143
-
144
- ##
145
- # Grants owner permission to the bucket.
146
- #
147
- # @param [String] entity The entity holding the permission, in one of
148
- # the following forms:
149
- #
150
- # * user-userId
151
- # * user-email
152
- # * group-groupId
153
- # * group-email
154
- # * domain-domain
155
- # * project-team-projectId
156
- # * allUsers
157
- # * allAuthenticatedUsers
158
- #
159
- # @example Grant access to a user by pre-pending `"user-"` to an email:
160
- # require "gcloud"
161
- #
162
- # gcloud = Gcloud.new
163
- # storage = gcloud.storage
164
- #
165
- # bucket = storage.bucket "my-bucket"
166
- #
167
- # email = "heidi@example.net"
168
- # bucket.acl.add_owner "user-#{email}"
169
- #
170
- # @example Grant access to a group by pre-pending `"group-"` to an email
171
- # require "gcloud"
172
- #
173
- # gcloud = Gcloud.new
174
- # storage = gcloud.storage
175
- #
176
- # bucket = storage.bucket "my-bucket"
177
- #
178
- # email = "authors@example.net"
179
- # bucket.acl.add_owner "group-#{email}"
180
- #
181
- def add_owner entity
182
- gapi = @service.insert_bucket_acl @bucket, entity, "OWNER"
183
- entity = gapi.entity
184
- @owners.push entity unless @owners.nil?
185
- entity
186
- end
187
-
188
- ##
189
- # Grants writer permission to the bucket.
190
- #
191
- # @param [String] entity The entity holding the permission, in one of
192
- # the following forms:
193
- #
194
- # * user-userId
195
- # * user-email
196
- # * group-groupId
197
- # * group-email
198
- # * domain-domain
199
- # * project-team-projectId
200
- # * allUsers
201
- # * allAuthenticatedUsers
202
- #
203
- # @example Grant access to a user by pre-pending `"user-"` to an email:
204
- # require "gcloud"
205
- #
206
- # gcloud = Gcloud.new
207
- # storage = gcloud.storage
208
- #
209
- # bucket = storage.bucket "my-bucket"
210
- #
211
- # email = "heidi@example.net"
212
- # bucket.acl.add_writer "user-#{email}"
213
- #
214
- # @example Grant access to a group by pre-pending `"group-"` to an email
215
- # require "gcloud"
216
- #
217
- # gcloud = Gcloud.new
218
- # storage = gcloud.storage
219
- #
220
- # bucket = storage.bucket "my-bucket"
221
- #
222
- # email = "authors@example.net"
223
- # bucket.acl.add_writer "group-#{email}"
224
- #
225
- def add_writer entity
226
- gapi = @service.insert_bucket_acl @bucket, entity, "WRITER"
227
- entity = gapi.entity
228
- @writers.push entity unless @writers.nil?
229
- entity
230
- end
231
-
232
- ##
233
- # Grants reader permission to the bucket.
234
- #
235
- # @param [String] entity The entity holding the permission, in one of
236
- # the following forms:
237
- #
238
- # * user-userId
239
- # * user-email
240
- # * group-groupId
241
- # * group-email
242
- # * domain-domain
243
- # * project-team-projectId
244
- # * allUsers
245
- # * allAuthenticatedUsers
246
- #
247
- # @example Grant access to a user by pre-pending `"user-"` to an email:
248
- # require "gcloud"
249
- #
250
- # gcloud = Gcloud.new
251
- # storage = gcloud.storage
252
- #
253
- # bucket = storage.bucket "my-bucket"
254
- #
255
- # email = "heidi@example.net"
256
- # bucket.acl.add_reader "user-#{email}"
257
- #
258
- # @example Grant access to a group by pre-pending `"group-"` to an email
259
- # require "gcloud"
260
- #
261
- # gcloud = Gcloud.new
262
- # storage = gcloud.storage
263
- #
264
- # bucket = storage.bucket "my-bucket"
265
- #
266
- # email = "authors@example.net"
267
- # bucket.acl.add_reader "group-#{email}"
268
- #
269
- def add_reader entity
270
- gapi = @service.insert_bucket_acl @bucket, entity, "READER"
271
- entity = gapi.entity
272
- @readers.push entity unless @readers.nil?
273
- entity
274
- end
275
-
276
- ##
277
- # Permanently deletes the entity from the bucket's access control list.
278
- #
279
- # @param [String] entity The entity holding the permission, in one of
280
- # the following forms:
281
- #
282
- # * user-userId
283
- # * user-email
284
- # * group-groupId
285
- # * group-email
286
- # * domain-domain
287
- # * project-team-projectId
288
- # * allUsers
289
- # * allAuthenticatedUsers
290
- #
291
- # @example
292
- # require "gcloud"
293
- #
294
- # gcloud = Gcloud.new
295
- # storage = gcloud.storage
296
- #
297
- # bucket = storage.bucket "my-bucket"
298
- #
299
- # email = "heidi@example.net"
300
- # bucket.acl.delete "user-#{email}"
301
- #
302
- def delete entity
303
- @service.delete_bucket_acl @bucket, entity
304
- @owners.delete entity unless @owners.nil?
305
- @writers.delete entity unless @writers.nil?
306
- @readers.delete entity unless @readers.nil?
307
- true
308
- end
309
-
310
- # @private
311
- def self.predefined_rule_for rule_name
312
- RULES[rule_name.to_s]
313
- end
314
-
315
- # Predefined ACL helpers
316
-
317
- ##
318
- # Convenience method to apply the `authenticatedRead` predefined ACL
319
- # rule to the bucket.
320
- #
321
- # @example
322
- # require "gcloud"
323
- #
324
- # gcloud = Gcloud.new
325
- # storage = gcloud.storage
326
- #
327
- # bucket = storage.bucket "my-bucket"
328
- #
329
- # bucket.acl.auth!
330
- #
331
- def auth!
332
- update_predefined_acl! "authenticatedRead"
333
- end
334
- alias_method :authenticatedRead!, :auth!
335
- alias_method :auth_read!, :auth!
336
- alias_method :authenticated!, :auth!
337
- alias_method :authenticated_read!, :auth!
338
-
339
- ##
340
- # Convenience method to apply the `private` predefined ACL
341
- # rule to the bucket.
342
- #
343
- # @example
344
- # require "gcloud"
345
- #
346
- # gcloud = Gcloud.new
347
- # storage = gcloud.storage
348
- #
349
- # bucket = storage.bucket "my-bucket"
350
- #
351
- # bucket.acl.private!
352
- #
353
- def private!
354
- update_predefined_acl! "private"
355
- end
356
-
357
- ##
358
- # Convenience method to apply the `projectPrivate` predefined ACL
359
- # rule to the bucket.
360
- #
361
- # @example
362
- # require "gcloud"
363
- #
364
- # gcloud = Gcloud.new
365
- # storage = gcloud.storage
366
- #
367
- # bucket = storage.bucket "my-bucket"
368
- #
369
- # bucket.acl.project_private!
370
- #
371
- def project_private!
372
- update_predefined_acl! "projectPrivate"
373
- end
374
- alias_method :projectPrivate!, :project_private!
375
-
376
- ##
377
- # Convenience method to apply the `publicRead` predefined ACL
378
- # rule to the bucket.
379
- #
380
- # @example
381
- # require "gcloud"
382
- #
383
- # gcloud = Gcloud.new
384
- # storage = gcloud.storage
385
- #
386
- # bucket = storage.bucket "my-bucket"
387
- #
388
- # bucket.acl.public!
389
- #
390
- def public!
391
- update_predefined_acl! "publicRead"
392
- end
393
- alias_method :publicRead!, :public!
394
- alias_method :public_read!, :public!
395
-
396
- # Convenience method to apply the `publicReadWrite` predefined ACL
397
- # rule to the bucket.
398
- #
399
- # @example
400
- # require "gcloud"
401
- #
402
- # gcloud = Gcloud.new
403
- # storage = gcloud.storage
404
- #
405
- # bucket = storage.bucket "my-bucket"
406
- #
407
- # bucket.acl.public_write!
408
- #
409
- def public_write!
410
- update_predefined_acl! "publicReadWrite"
411
- end
412
- alias_method :publicReadWrite!, :public_write!
413
-
414
- protected
415
-
416
- def clear!
417
- @owners = nil
418
- @writers = nil
419
- @readers = nil
420
- self
421
- end
422
-
423
- def update_predefined_acl! acl_role
424
- @service.patch_bucket @bucket, predefined_acl: acl_role
425
- clear!
426
- end
427
-
428
- def entities_from_acls acls, role
429
- selected = acls.select { |acl| acl.role == role }
430
- entities = selected.map(&:entity)
431
- entities
432
- end
433
- end
434
-
435
- ##
436
- # # Bucket Default Access Control List
437
- #
438
- # Represents a Bucket's Default Access Control List.
439
- #
440
- # @example
441
- # require "gcloud"
442
- #
443
- # gcloud = Gcloud.new
444
- # storage = gcloud.storage
445
- #
446
- # bucket = storage.bucket "my-bucket"
447
- #
448
- # bucket.default_acl.readers.each { |reader| puts reader }
449
- #
450
- class DefaultAcl
451
- # @private
452
- RULES = { "authenticatedRead" => "authenticatedRead",
453
- "auth" => "authenticatedRead",
454
- "auth_read" => "authenticatedRead",
455
- "authenticated" => "authenticatedRead",
456
- "authenticated_read" => "authenticatedRead",
457
- "bucketOwnerFullControl" => "bucketOwnerFullControl",
458
- "owner_full" => "bucketOwnerFullControl",
459
- "bucketOwnerRead" => "bucketOwnerRead",
460
- "owner_read" => "bucketOwnerRead",
461
- "private" => "private",
462
- "projectPrivate" => "projectPrivate",
463
- "project_private" => "projectPrivate",
464
- "publicRead" => "publicRead",
465
- "public" => "publicRead",
466
- "public_read" => "publicRead" }
467
-
468
- ##
469
- # @private Initialized a new DefaultAcl object.
470
- # Must provide a valid Bucket object.
471
- def initialize bucket
472
- @bucket = bucket.name
473
- @service = bucket.service
474
- @owners = nil
475
- @readers = nil
476
- end
477
-
478
- ##
479
- # Reloads all Default Access Control List data for the bucket.
480
- #
481
- # @example
482
- # require "gcloud"
483
- #
484
- # gcloud = Gcloud.new
485
- # storage = gcloud.storage
486
- #
487
- # bucket = storage.bucket "my-bucket"
488
- #
489
- # bucket.default_acl.reload!
490
- #
491
- def reload!
492
- gapi = @service.list_default_acls @bucket
493
- acls = Array(gapi.items).map do |acl|
494
- return acl if acl.is_a? Google::Apis::StorageV1::ObjectAccessControl
495
- fail "Unknown ACL format: #{acl.class}" unless acl.is_a? Hash
496
- Google::Apis::StorageV1::ObjectAccessControl.from_json acl.to_json
497
- end
498
- @owners = entities_from_acls acls, "OWNER"
499
- @readers = entities_from_acls acls, "READER"
500
- end
501
- alias_method :refresh!, :reload!
502
-
503
- ##
504
- # Lists the default owners for files in the bucket.
505
- #
506
- # @return [Array<String>]
507
- #
508
- # @example
509
- # require "gcloud"
510
- #
511
- # gcloud = Gcloud.new
512
- # storage = gcloud.storage
513
- #
514
- # bucket = storage.bucket "my-bucket"
515
- #
516
- # bucket.default_acl.owners.each { |owner| puts owner }
517
- #
518
- def owners
519
- reload! if @owners.nil?
520
- @owners
521
- end
522
-
523
- ##
524
- # Lists the default readers for files in the bucket.
525
- #
526
- # @return [Array<String>]
527
- #
528
- # @example
529
- # require "gcloud"
530
- #
531
- # gcloud = Gcloud.new
532
- # storage = gcloud.storage
533
- #
534
- # bucket = storage.bucket "my-bucket"
535
- #
536
- # bucket.default_acl.readers.each { |reader| puts reader }
537
- #
538
- def readers
539
- reload! if @readers.nil?
540
- @readers
541
- end
542
-
543
- ##
544
- # Grants default owner permission to files in the bucket.
545
- #
546
- # @param [String] entity The entity holding the permission, in one of
547
- # the following forms:
548
- #
549
- # * user-userId
550
- # * user-email
551
- # * group-groupId
552
- # * group-email
553
- # * domain-domain
554
- # * project-team-projectId
555
- # * allUsers
556
- # * allAuthenticatedUsers
557
- #
558
- # @example Grant access to a user by pre-pending `"user-"` to an email:
559
- # require "gcloud"
560
- #
561
- # gcloud = Gcloud.new
562
- # storage = gcloud.storage
563
- #
564
- # bucket = storage.bucket "my-bucket"
565
- #
566
- # email = "heidi@example.net"
567
- # bucket.default_acl.add_owner "user-#{email}"
568
- #
569
- # @example Grant access to a group by pre-pending `"group-"` to an email
570
- # require "gcloud"
571
- #
572
- # gcloud = Gcloud.new
573
- # storage = gcloud.storage
574
- #
575
- # bucket = storage.bucket "my-bucket"
576
- #
577
- # email = "authors@example.net"
578
- # bucket.default_acl.add_owner "group-#{email}"
579
- #
580
- def add_owner entity
581
- gapi = @service.insert_default_acl @bucket, entity, "OWNER"
582
- entity = gapi.entity
583
- @owners.push entity unless @owners.nil?
584
- entity
585
- end
586
-
587
- ##
588
- # Grants default reader permission to files in the bucket.
589
- #
590
- # @param [String] entity The entity holding the permission, in one of
591
- # the following forms:
592
- #
593
- # * user-userId
594
- # * user-email
595
- # * group-groupId
596
- # * group-email
597
- # * domain-domain
598
- # * project-team-projectId
599
- # * allUsers
600
- # * allAuthenticatedUsers
601
- #
602
- # @example Grant access to a user by pre-pending `"user-"` to an email:
603
- # require "gcloud"
604
- #
605
- # gcloud = Gcloud.new
606
- # storage = gcloud.storage
607
- #
608
- # bucket = storage.bucket "my-bucket"
609
- #
610
- # email = "heidi@example.net"
611
- # bucket.default_acl.add_reader "user-#{email}"
612
- #
613
- # @example Grant access to a group by pre-pending `"group-"` to an email
614
- # require "gcloud"
615
- #
616
- # gcloud = Gcloud.new
617
- # storage = gcloud.storage
618
- #
619
- # bucket = storage.bucket "my-bucket"
620
- #
621
- # email = "authors@example.net"
622
- # bucket.default_acl.add_reader "group-#{email}"
623
- #
624
- def add_reader entity
625
- gapi = @service.insert_default_acl @bucket, entity, "READER"
626
- entity = gapi.entity
627
- @readers.push entity unless @readers.nil?
628
- entity
629
- end
630
-
631
- ##
632
- # Permanently deletes the entity from the bucket's default access
633
- # control list for files.
634
- #
635
- # @param [String] entity The entity holding the permission, in one of
636
- # the following forms:
637
- #
638
- # * user-userId
639
- # * user-email
640
- # * group-groupId
641
- # * group-email
642
- # * domain-domain
643
- # * project-team-projectId
644
- # * allUsers
645
- # * allAuthenticatedUsers
646
- #
647
- # @example
648
- # require "gcloud"
649
- #
650
- # gcloud = Gcloud.new
651
- # storage = gcloud.storage
652
- #
653
- # bucket = storage.bucket "my-bucket"
654
- #
655
- # email = "heidi@example.net"
656
- # bucket.default_acl.delete "user-#{email}"
657
- #
658
- def delete entity
659
- @service.delete_default_acl @bucket, entity
660
- @owners.delete entity unless @owners.nil?
661
- @readers.delete entity unless @readers.nil?
662
- true
663
- end
664
-
665
- # @private
666
- def self.predefined_rule_for rule_name
667
- RULES[rule_name.to_s]
668
- end
669
-
670
- # Predefined ACL helpers
671
-
672
- ##
673
- # Convenience method to apply the default `authenticatedRead`
674
- # predefined ACL rule to files in the bucket.
675
- #
676
- # @example
677
- # require "gcloud"
678
- #
679
- # gcloud = Gcloud.new
680
- # storage = gcloud.storage
681
- #
682
- # bucket = storage.bucket "my-bucket"
683
- #
684
- # bucket.acl.auth!
685
- #
686
- def auth!
687
- update_predefined_default_acl! "authenticatedRead"
688
- end
689
- alias_method :authenticatedRead!, :auth!
690
- alias_method :auth_read!, :auth!
691
- alias_method :authenticated!, :auth!
692
- alias_method :authenticated_read!, :auth!
693
-
694
- ##
695
- # Convenience method to apply the default `bucketOwnerFullControl`
696
- # predefined ACL rule to files in the bucket.
697
- #
698
- # @example
699
- # require "gcloud"
700
- #
701
- # gcloud = Gcloud.new
702
- # storage = gcloud.storage
703
- #
704
- # bucket = storage.bucket "my-bucket"
705
- #
706
- # bucket.acl.owner_full!
707
- #
708
- def owner_full!
709
- update_predefined_default_acl! "bucketOwnerFullControl"
710
- end
711
- alias_method :bucketOwnerFullControl!, :owner_full!
712
-
713
- ##
714
- # Convenience method to apply the default `bucketOwnerRead`
715
- # predefined ACL rule to files in the bucket.
716
- #
717
- # @example
718
- # require "gcloud"
719
- #
720
- # gcloud = Gcloud.new
721
- # storage = gcloud.storage
722
- #
723
- # bucket = storage.bucket "my-bucket"
724
- #
725
- # bucket.acl.owner_read!
726
- #
727
- def owner_read!
728
- update_predefined_default_acl! "bucketOwnerRead"
729
- end
730
- alias_method :bucketOwnerRead!, :owner_read!
731
-
732
- ##
733
- # Convenience method to apply the default `private`
734
- # predefined ACL rule to files in the bucket.
735
- #
736
- # @example
737
- # require "gcloud"
738
- #
739
- # gcloud = Gcloud.new
740
- # storage = gcloud.storage
741
- #
742
- # bucket = storage.bucket "my-bucket"
743
- #
744
- # bucket.acl.private!
745
- #
746
- def private!
747
- update_predefined_default_acl! "private"
748
- end
749
-
750
- ##
751
- # Convenience method to apply the default `projectPrivate`
752
- # predefined ACL rule to files in the bucket.
753
- #
754
- # @example
755
- # require "gcloud"
756
- #
757
- # gcloud = Gcloud.new
758
- # storage = gcloud.storage
759
- #
760
- # bucket = storage.bucket "my-bucket"
761
- #
762
- # bucket.acl.project_private!
763
- #
764
- def project_private!
765
- update_predefined_default_acl! "projectPrivate"
766
- end
767
- alias_method :projectPrivate!, :project_private!
768
-
769
- ##
770
- # Convenience method to apply the default `publicRead`
771
- # predefined ACL rule to files in the bucket.
772
- #
773
- # @example
774
- # require "gcloud"
775
- #
776
- # gcloud = Gcloud.new
777
- # storage = gcloud.storage
778
- #
779
- # bucket = storage.bucket "my-bucket"
780
- #
781
- # bucket.acl.public!
782
- #
783
- def public!
784
- update_predefined_default_acl! "publicRead"
785
- end
786
- alias_method :publicRead!, :public!
787
- alias_method :public_read!, :public!
788
-
789
- protected
790
-
791
- def clear!
792
- @owners = nil
793
- @readers = nil
794
- self
795
- end
796
-
797
- def update_predefined_default_acl! acl_role
798
- @service.patch_bucket @bucket, predefined_default_acl: acl_role
799
- clear!
800
- end
801
-
802
- def entities_from_acls acls, role
803
- selected = acls.select { |acl| acl.role == role }
804
- entities = selected.map(&:entity)
805
- entities
806
- end
807
- end
808
- end
809
- end
810
- end