gcloud 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +8 -8
  2. data/AUTHENTICATION.md +3 -3
  3. data/CHANGELOG.md +92 -0
  4. data/OVERVIEW.md +3 -3
  5. data/lib/gcloud.rb +75 -25
  6. data/lib/gcloud/backoff.rb +5 -1
  7. data/lib/gcloud/bigquery.rb +25 -43
  8. data/lib/gcloud/bigquery/copy_job.rb +13 -13
  9. data/lib/gcloud/bigquery/data.rb +20 -16
  10. data/lib/gcloud/bigquery/dataset.rb +202 -177
  11. data/lib/gcloud/bigquery/dataset/access.rb +118 -104
  12. data/lib/gcloud/bigquery/dataset/list.rb +14 -18
  13. data/lib/gcloud/bigquery/extract_job.rb +12 -12
  14. data/lib/gcloud/bigquery/insert_response.rb +12 -14
  15. data/lib/gcloud/bigquery/job.rb +45 -57
  16. data/lib/gcloud/bigquery/job/list.rb +18 -24
  17. data/lib/gcloud/bigquery/load_job.rb +35 -27
  18. data/lib/gcloud/bigquery/project.rb +53 -73
  19. data/lib/gcloud/bigquery/query_data.rb +28 -35
  20. data/lib/gcloud/bigquery/query_job.rb +18 -18
  21. data/lib/gcloud/bigquery/schema.rb +359 -0
  22. data/lib/gcloud/bigquery/service.rb +506 -0
  23. data/lib/gcloud/bigquery/table.rb +185 -266
  24. data/lib/gcloud/bigquery/table/list.rb +15 -19
  25. data/lib/gcloud/bigquery/view.rb +126 -81
  26. data/lib/gcloud/datastore.rb +39 -27
  27. data/lib/gcloud/datastore/commit.rb +2 -2
  28. data/lib/gcloud/datastore/dataset.rb +8 -19
  29. data/lib/gcloud/datastore/dataset/lookup_results.rb +2 -4
  30. data/lib/gcloud/datastore/dataset/query_results.rb +0 -2
  31. data/lib/gcloud/datastore/entity.rb +7 -1
  32. data/lib/gcloud/datastore/errors.rb +5 -27
  33. data/lib/gcloud/datastore/grpc_utils.rb +4 -3
  34. data/lib/gcloud/datastore/key.rb +6 -0
  35. data/lib/gcloud/datastore/service.rb +18 -12
  36. data/lib/gcloud/datastore/transaction.rb +0 -10
  37. data/lib/gcloud/dns.rb +29 -19
  38. data/lib/gcloud/dns/change.rb +10 -15
  39. data/lib/gcloud/dns/change/list.rb +4 -4
  40. data/lib/gcloud/dns/importer.rb +1 -1
  41. data/lib/gcloud/dns/project.rb +32 -49
  42. data/lib/gcloud/dns/record.rb +8 -2
  43. data/lib/gcloud/dns/record/list.rb +4 -4
  44. data/lib/gcloud/dns/service.rb +167 -0
  45. data/lib/gcloud/dns/zone.rb +33 -52
  46. data/lib/gcloud/dns/zone/list.rb +12 -16
  47. data/lib/gcloud/errors.rb +31 -19
  48. data/lib/gcloud/logging.rb +50 -39
  49. data/lib/gcloud/logging/entry.rb +197 -24
  50. data/lib/gcloud/logging/entry/list.rb +0 -2
  51. data/lib/gcloud/logging/logger.rb +1 -1
  52. data/lib/gcloud/logging/metric.rb +3 -9
  53. data/lib/gcloud/logging/metric/list.rb +0 -2
  54. data/lib/gcloud/logging/project.rb +58 -54
  55. data/lib/gcloud/logging/resource_descriptor.rb +2 -2
  56. data/lib/gcloud/logging/resource_descriptor/list.rb +0 -2
  57. data/lib/gcloud/logging/service.rb +32 -23
  58. data/lib/gcloud/logging/sink.rb +8 -14
  59. data/lib/gcloud/logging/sink/list.rb +0 -2
  60. data/lib/gcloud/pubsub.rb +21 -16
  61. data/lib/gcloud/pubsub/policy.rb +204 -0
  62. data/lib/gcloud/pubsub/project.rb +26 -38
  63. data/lib/gcloud/pubsub/service.rb +39 -31
  64. data/lib/gcloud/pubsub/subscription.rb +56 -59
  65. data/lib/gcloud/pubsub/subscription/list.rb +4 -4
  66. data/lib/gcloud/pubsub/topic.rb +69 -66
  67. data/lib/gcloud/pubsub/topic/list.rb +0 -2
  68. data/lib/gcloud/pubsub/topic/{batch.rb → publisher.rb} +15 -2
  69. data/lib/gcloud/resource_manager.rb +27 -26
  70. data/lib/gcloud/resource_manager/manager.rb +19 -39
  71. data/lib/gcloud/resource_manager/policy.rb +211 -0
  72. data/lib/gcloud/resource_manager/project.rb +97 -121
  73. data/lib/gcloud/resource_manager/project/list.rb +7 -7
  74. data/lib/gcloud/resource_manager/project/updater.rb +4 -9
  75. data/lib/gcloud/resource_manager/service.rb +127 -0
  76. data/lib/gcloud/storage.rb +24 -42
  77. data/lib/gcloud/storage/bucket.rb +104 -192
  78. data/lib/gcloud/storage/bucket/acl.rb +47 -143
  79. data/lib/gcloud/storage/bucket/cors.rb +55 -11
  80. data/lib/gcloud/storage/bucket/list.rb +14 -14
  81. data/lib/gcloud/storage/errors.rb +3 -43
  82. data/lib/gcloud/storage/file.rb +114 -111
  83. data/lib/gcloud/storage/file/acl.rb +27 -113
  84. data/lib/gcloud/storage/file/list.rb +21 -21
  85. data/lib/gcloud/storage/project.rb +49 -59
  86. data/lib/gcloud/storage/service.rb +347 -0
  87. data/lib/gcloud/translate.rb +24 -14
  88. data/lib/gcloud/translate/api.rb +12 -21
  89. data/lib/gcloud/translate/detection.rb +5 -5
  90. data/lib/gcloud/translate/language.rb +1 -1
  91. data/lib/gcloud/translate/service.rb +80 -0
  92. data/lib/gcloud/translate/translation.rb +6 -6
  93. data/lib/gcloud/version.rb +1 -1
  94. data/lib/gcloud/vision.rb +24 -15
  95. data/lib/gcloud/vision/annotate.rb +24 -21
  96. data/lib/gcloud/vision/annotation.rb +9 -9
  97. data/lib/gcloud/vision/annotation/entity.rb +11 -11
  98. data/lib/gcloud/vision/annotation/face.rb +25 -25
  99. data/lib/gcloud/vision/annotation/properties.rb +8 -8
  100. data/lib/gcloud/vision/annotation/safe_search.rb +4 -4
  101. data/lib/gcloud/vision/annotation/text.rb +7 -7
  102. data/lib/gcloud/vision/annotation/vertex.rb +1 -1
  103. data/lib/gcloud/vision/image.rb +11 -11
  104. data/lib/gcloud/vision/location.rb +5 -2
  105. data/lib/gcloud/vision/project.rb +14 -16
  106. data/lib/gcloud/vision/service.rb +66 -0
  107. data/lib/google/api_client.rb +0 -0
  108. metadata +27 -24
  109. data/lib/gcloud/bigquery/connection.rb +0 -624
  110. data/lib/gcloud/bigquery/errors.rb +0 -68
  111. data/lib/gcloud/bigquery/table/schema.rb +0 -234
  112. data/lib/gcloud/dns/connection.rb +0 -173
  113. data/lib/gcloud/dns/errors.rb +0 -68
  114. data/lib/gcloud/resource_manager/connection.rb +0 -134
  115. data/lib/gcloud/resource_manager/errors.rb +0 -68
  116. data/lib/gcloud/storage/connection.rb +0 -444
  117. data/lib/gcloud/translate/connection.rb +0 -85
  118. data/lib/gcloud/translate/errors.rb +0 -68
  119. data/lib/gcloud/upload.rb +0 -95
  120. data/lib/gcloud/vision/connection.rb +0 -63
  121. data/lib/gcloud/vision/errors.rb +0 -69
@@ -53,7 +53,7 @@ module Gcloud
53
53
  # Must provide a valid Bucket object.
54
54
  def initialize bucket
55
55
  @bucket = bucket.name
56
- @connection = bucket.connection
56
+ @service = bucket.service
57
57
  @owners = nil
58
58
  @writers = nil
59
59
  @readers = nil
@@ -73,8 +73,8 @@ module Gcloud
73
73
  # bucket.acl.reload!
74
74
  #
75
75
  def reload!
76
- resp = @connection.list_bucket_acls @bucket
77
- acls = resp.data["items"]
76
+ gapi = @service.list_bucket_acls @bucket
77
+ acls = Array(gapi.items)
78
78
  @owners = entities_from_acls acls, "OWNER"
79
79
  @writers = entities_from_acls acls, "WRITER"
80
80
  @readers = entities_from_acls acls, "READER"
@@ -179,13 +179,10 @@ module Gcloud
179
179
  # bucket.acl.add_owner "group-#{email}"
180
180
  #
181
181
  def add_owner entity
182
- resp = @connection.insert_bucket_acl @bucket, entity, "OWNER"
183
- if resp.success?
184
- entity = resp.data["entity"]
185
- @owners.push entity unless @owners.nil?
186
- return entity
187
- end
188
- nil
182
+ gapi = @service.insert_bucket_acl @bucket, entity, "OWNER"
183
+ entity = gapi.entity
184
+ @owners.push entity unless @owners.nil?
185
+ entity
189
186
  end
190
187
 
191
188
  ##
@@ -226,13 +223,10 @@ module Gcloud
226
223
  # bucket.acl.add_writer "group-#{email}"
227
224
  #
228
225
  def add_writer entity
229
- resp = @connection.insert_bucket_acl @bucket, entity, "WRITER"
230
- if resp.success?
231
- entity = resp.data["entity"]
232
- @writers.push entity unless @writers.nil?
233
- return entity
234
- end
235
- nil
226
+ gapi = @service.insert_bucket_acl @bucket, entity, "WRITER"
227
+ entity = gapi.entity
228
+ @writers.push entity unless @writers.nil?
229
+ entity
236
230
  end
237
231
 
238
232
  ##
@@ -273,13 +267,10 @@ module Gcloud
273
267
  # bucket.acl.add_reader "group-#{email}"
274
268
  #
275
269
  def add_reader entity
276
- resp = @connection.insert_bucket_acl @bucket, entity, "READER"
277
- if resp.success?
278
- entity = resp.data["entity"]
279
- @readers.push entity unless @readers.nil?
280
- return entity
281
- end
282
- nil
270
+ gapi = @service.insert_bucket_acl @bucket, entity, "READER"
271
+ entity = gapi.entity
272
+ @readers.push entity unless @readers.nil?
273
+ entity
283
274
  end
284
275
 
285
276
  ##
@@ -309,14 +300,11 @@ module Gcloud
309
300
  # bucket.acl.delete "user-#{email}"
310
301
  #
311
302
  def delete entity
312
- resp = @connection.delete_bucket_acl @bucket, entity
313
- if resp.success?
314
- @owners.delete entity unless @owners.nil?
315
- @writers.delete entity unless @writers.nil?
316
- @readers.delete entity unless @readers.nil?
317
- return true
318
- end
319
- false
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
320
308
  end
321
309
 
322
310
  # @private
@@ -433,17 +421,13 @@ module Gcloud
433
421
  end
434
422
 
435
423
  def update_predefined_acl! acl_role
436
- resp = @connection.patch_bucket @bucket,
437
- predefined_acl: acl_role,
438
- acl: []
439
-
440
- return clear! if resp.success?
441
- fail Gcloud::Storage::ApiError.from_response(resp)
424
+ @service.patch_bucket @bucket, predefined_acl: acl_role
425
+ clear!
442
426
  end
443
427
 
444
428
  def entities_from_acls acls, role
445
- selected = acls.select { |acl| acl["role"] == role }
446
- entities = selected.map { |acl| acl["entity"] }
429
+ selected = acls.select { |acl| acl.role == role }
430
+ entities = selected.map(&:entity)
447
431
  entities
448
432
  end
449
433
  end
@@ -486,9 +470,8 @@ module Gcloud
486
470
  # Must provide a valid Bucket object.
487
471
  def initialize bucket
488
472
  @bucket = bucket.name
489
- @connection = bucket.connection
473
+ @service = bucket.service
490
474
  @owners = nil
491
- @writers = nil
492
475
  @readers = nil
493
476
  end
494
477
 
@@ -506,10 +489,13 @@ module Gcloud
506
489
  # bucket.default_acl.reload!
507
490
  #
508
491
  def reload!
509
- resp = @connection.list_default_acls @bucket
510
- acls = resp.data["items"]
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
511
498
  @owners = entities_from_acls acls, "OWNER"
512
- @writers = entities_from_acls acls, "WRITER"
513
499
  @readers = entities_from_acls acls, "READER"
514
500
  end
515
501
  alias_method :refresh!, :reload!
@@ -534,26 +520,6 @@ module Gcloud
534
520
  @owners
535
521
  end
536
522
 
537
- ##
538
- # Lists the default writers for files in the bucket.
539
- #
540
- # @return [Array<String>]
541
- #
542
- # @example
543
- # require "gcloud"
544
- #
545
- # gcloud = Gcloud.new
546
- # storage = gcloud.storage
547
- #
548
- # bucket = storage.bucket "my-bucket"
549
- #
550
- # bucket.default_acl.writers.each { |writer| puts writer }
551
- #
552
- def writers
553
- reload! if @writers.nil?
554
- @writers
555
- end
556
-
557
523
  ##
558
524
  # Lists the default readers for files in the bucket.
559
525
  #
@@ -612,60 +578,10 @@ module Gcloud
612
578
  # bucket.default_acl.add_owner "group-#{email}"
613
579
  #
614
580
  def add_owner entity
615
- resp = @connection.insert_default_acl @bucket, entity, "OWNER"
616
- if resp.success?
617
- entity = resp.data["entity"]
618
- @owners.push entity unless @owners.nil?
619
- return entity
620
- end
621
- nil
622
- end
623
-
624
- ##
625
- # Grants default writer permission to files in the bucket.
626
- #
627
- # @param [String] entity The entity holding the permission, in one of
628
- # the following forms:
629
- #
630
- # * user-userId
631
- # * user-email
632
- # * group-groupId
633
- # * group-email
634
- # * domain-domain
635
- # * project-team-projectId
636
- # * allUsers
637
- # * allAuthenticatedUsers
638
- #
639
- # @example Grant access to a user by pre-pending `"user-"` to an email:
640
- # require "gcloud"
641
- #
642
- # gcloud = Gcloud.new
643
- # storage = gcloud.storage
644
- #
645
- # bucket = storage.bucket "my-bucket"
646
- #
647
- # email = "heidi@example.net"
648
- # bucket.default_acl.add_writer "user-#{email}"
649
- #
650
- # @example Grant access to a group by pre-pending `"group-"` to an email
651
- # require "gcloud"
652
- #
653
- # gcloud = Gcloud.new
654
- # storage = gcloud.storage
655
- #
656
- # bucket = storage.bucket "my-bucket"
657
- #
658
- # email = "authors@example.net"
659
- # bucket.default_acl.add_writer "group-#{email}"
660
- #
661
- def add_writer entity
662
- resp = @connection.insert_default_acl @bucket, entity, "WRITER"
663
- if resp.success?
664
- entity = resp.data["entity"]
665
- @writers.push entity unless @writers.nil?
666
- return entity
667
- end
668
- nil
581
+ gapi = @service.insert_default_acl @bucket, entity, "OWNER"
582
+ entity = gapi.entity
583
+ @owners.push entity unless @owners.nil?
584
+ entity
669
585
  end
670
586
 
671
587
  ##
@@ -706,13 +622,10 @@ module Gcloud
706
622
  # bucket.default_acl.add_reader "group-#{email}"
707
623
  #
708
624
  def add_reader entity
709
- resp = @connection.insert_default_acl @bucket, entity, "READER"
710
- if resp.success?
711
- entity = resp.data["entity"]
712
- @readers.push entity unless @readers.nil?
713
- return entity
714
- end
715
- nil
625
+ gapi = @service.insert_default_acl @bucket, entity, "READER"
626
+ entity = gapi.entity
627
+ @readers.push entity unless @readers.nil?
628
+ entity
716
629
  end
717
630
 
718
631
  ##
@@ -743,14 +656,10 @@ module Gcloud
743
656
  # bucket.default_acl.delete "user-#{email}"
744
657
  #
745
658
  def delete entity
746
- resp = @connection.delete_default_acl @bucket, entity
747
- if resp.success?
748
- @owners.delete entity unless @owners.nil?
749
- @writers.delete entity unless @writers.nil?
750
- @readers.delete entity unless @readers.nil?
751
- return true
752
- end
753
- false
659
+ @service.delete_default_acl @bucket, entity
660
+ @owners.delete entity unless @owners.nil?
661
+ @readers.delete entity unless @readers.nil?
662
+ true
754
663
  end
755
664
 
756
665
  # @private
@@ -881,23 +790,18 @@ module Gcloud
881
790
 
882
791
  def clear!
883
792
  @owners = nil
884
- @writers = nil
885
793
  @readers = nil
886
794
  self
887
795
  end
888
796
 
889
797
  def update_predefined_default_acl! acl_role
890
- resp = @connection.patch_bucket @bucket,
891
- predefined_default_acl: acl_role,
892
- default_acl: []
893
-
894
- return clear! if resp.success?
895
- fail Gcloud::Storage::ApiError.from_response(resp)
798
+ @service.patch_bucket @bucket, predefined_default_acl: acl_role
799
+ clear!
896
800
  end
897
801
 
898
802
  def entities_from_acls acls, role
899
- selected = acls.select { |acl| acl["role"] == role }
900
- entities = selected.map { |acl| acl["entity"] }
803
+ selected = acls.select { |acl| acl.role == role }
804
+ entities = selected.map(&:entity)
901
805
  entities
902
806
  end
903
807
  end
@@ -22,8 +22,7 @@ module Gcloud
22
22
  # # Bucket Cors
23
23
  #
24
24
  # A special-case Array for managing the website CORS rules for a bucket.
25
- # Accessed via a block argument to {Project#create_bucket}, {Bucket#cors},
26
- # or {Bucket#update}.
25
+ # Accessed via {Bucket#cors}.
27
26
  #
28
27
  # @see https://cloud.google.com/storage/docs/cross-origin Cross-Origin
29
28
  # Resource Sharing (CORS)
@@ -35,11 +34,12 @@ module Gcloud
35
34
  # storage = gcloud.storage
36
35
  # bucket = storage.bucket "my-todo-app"
37
36
  #
37
+ # bucket = storage.bucket "my-bucket"
38
38
  # bucket.cors do |c|
39
39
  # # Remove the last CORS rule from the array
40
40
  # c.pop
41
41
  # # Remove all existing rules with the https protocol
42
- # c.delete_if { |r| r["origin"].include? "http://example.com" }
42
+ # c.delete_if { |r| r.origin.include? "http://example.com" }
43
43
  # c.add_rule ["http://example.org", "https://example.org"],
44
44
  # ["GET", "POST", "DELETE"],
45
45
  # response_headers: ["X-My-Custom-Header"],
@@ -50,14 +50,14 @@ module Gcloud
50
50
  ##
51
51
  # @private
52
52
  # Initialize a new CORS rules builder with existing CORS rules, if any.
53
- def initialize cors = []
54
- super cors.dup
55
- @original = cors.dup
53
+ def initialize rules = []
54
+ super rules
55
+ @original = to_gapi.map(&:to_json)
56
56
  end
57
57
 
58
58
  # @private
59
59
  def changed?
60
- @original != self
60
+ @original != to_gapi.map(&:to_json)
61
61
  end
62
62
 
63
63
  ##
@@ -98,10 +98,54 @@ module Gcloud
98
98
  # end
99
99
  #
100
100
  def add_rule origin, methods, headers: nil, max_age: nil
101
- rule = { "origin" => Array(origin), "method" => Array(methods) }
102
- rule["responseHeader"] = Array(headers) || []
103
- rule["maxAgeSeconds"] = max_age || 1800
104
- push rule
101
+ push Rule.new(origin, methods, headers: headers, max_age: max_age)
102
+ end
103
+
104
+ # @private
105
+ def to_gapi
106
+ map(&:to_gapi)
107
+ end
108
+
109
+ # @private
110
+ def self.from_gapi gapi_list
111
+ rules = Array(gapi_list).map { |gapi| Rule.from_gapi gapi }
112
+ new rules
113
+ end
114
+
115
+ # @private
116
+ def freeze
117
+ each(&:freeze)
118
+ super
119
+ end
120
+
121
+ class Rule
122
+ attr_accessor :origin, :methods, :headers, :max_age
123
+
124
+ def initialize origin, methods, headers: nil, max_age: nil
125
+ @origin = Array(origin)
126
+ @methods = Array(methods)
127
+ @headers = Array(headers)
128
+ @max_age = (max_age||1800)
129
+ end
130
+
131
+ def to_gapi
132
+ Google::Apis::StorageV1::Bucket::CorsConfiguration.new(
133
+ origin: Array(origin).dup, http_method: Array(methods).dup,
134
+ response_header: Array(headers).dup, max_age_seconds: max_age
135
+ )
136
+ end
137
+
138
+ def self.from_gapi gapi
139
+ new gapi.origin.dup, gapi.http_method.dup, \
140
+ headers: gapi.response_header.dup, max_age: gapi.max_age_seconds
141
+ end
142
+
143
+ def freeze
144
+ @origin.freeze
145
+ @methods.freeze
146
+ @headers.freeze
147
+ super
148
+ end
105
149
  end
106
150
  end
107
151
  end
@@ -71,11 +71,10 @@ module Gcloud
71
71
  #
72
72
  def next
73
73
  return nil unless next?
74
- ensure_connection!
74
+ ensure_service!
75
75
  options = { prefix: @prefix, token: @token, max: @max }
76
- resp = @connection.list_buckets options
77
- fail ApiError.from_response(resp) unless resp.success?
78
- Bucket::List.from_response resp, @connection, @prefix, @max
76
+ gapi = @service.list_buckets options
77
+ Bucket::List.from_gapi gapi, @service, @prefix, @max
79
78
  end
80
79
 
81
80
  ##
@@ -147,15 +146,16 @@ module Gcloud
147
146
  end
148
147
 
149
148
  ##
150
- # @private New Bucket::List from a response object.
151
- def self.from_response resp, conn, prefix = nil, max = nil
152
- buckets = new(Array(resp.data["items"]).map do |gapi_object|
153
- Bucket.from_gapi gapi_object, conn
149
+ # @private New Bucket::List from a Google API Client
150
+ # Google::Apis::StorageV1::Buckets object.
151
+ def self.from_gapi gapi_list, service, prefix = nil, max = nil
152
+ buckets = new(Array(gapi_list.items).map do |gapi_object|
153
+ Bucket.from_gapi gapi_object, service
154
154
  end)
155
- buckets.instance_variable_set "@token", resp.data["nextPageToken"]
156
- buckets.instance_variable_set "@connection", conn
157
- buckets.instance_variable_set "@prefix", prefix
158
- buckets.instance_variable_set "@max", max
155
+ buckets.instance_variable_set :@token, gapi_list.next_page_token
156
+ buckets.instance_variable_set :@service, service
157
+ buckets.instance_variable_set :@prefix, prefix
158
+ buckets.instance_variable_set :@max, max
159
159
  buckets
160
160
  end
161
161
 
@@ -163,8 +163,8 @@ module Gcloud
163
163
 
164
164
  ##
165
165
  # Raise an error unless an active connection is available.
166
- def ensure_connection!
167
- fail "Must have active connection" unless @connection
166
+ def ensure_service!
167
+ fail "Must have active connection" unless @service
168
168
  end
169
169
  end
170
170
  end
@@ -17,58 +17,18 @@ require "gcloud/errors"
17
17
 
18
18
  module Gcloud
19
19
  module Storage
20
- ##
21
- # # Storage Error
22
- #
23
- # Base Storage exception class.
24
- class Error < Gcloud::Error
25
- end
26
-
27
- ##
28
- # # ApiError
29
- #
30
- # Raised when an API call is not successful.
31
- class ApiError < Error
32
- ##
33
- # The code of the error.
34
- attr_reader :code
35
-
36
- ##
37
- # The errors encountered.
38
- attr_reader :errors
39
-
40
- def initialize message, code, errors
41
- super message
42
- @code = code
43
- @errors = errors
44
- end
45
-
46
- # @private
47
- def self.from_response resp
48
- if resp.data && resp.data["error"]
49
- new resp.data["error"]["message"],
50
- resp.data["error"]["code"],
51
- resp.data["error"]["errors"]
52
- else
53
- new resp.error_message,
54
- resp.status,
55
- nil
56
- end
57
- end
58
- end
59
-
60
20
  ##
61
21
  # # FileVerificationError
62
22
  #
63
23
  # Raised when a File download fails the verification.
64
- class FileVerificationError < Error
24
+ class FileVerificationError < Gcloud::Error
65
25
  ##
66
26
  # The type of digest that failed verification,
67
27
  # :md5 or :crc32c.
68
28
  attr_accessor :type
69
29
 
70
30
  ##
71
- # The value of the digest on the Gcloud file.
31
+ # The value of the digest on the gcloud-ruby file.
72
32
  attr_accessor :gcloud_digest
73
33
 
74
34
  ##
@@ -99,7 +59,7 @@ module Gcloud
99
59
  #
100
60
  # This is raised when File#signed_url is unable to generate a URL due to
101
61
  # missing credentials needed to create the URL.
102
- class SignedUrlUnavailable < Error
62
+ class SignedUrlUnavailable < Gcloud::Error
103
63
  end
104
64
  end
105
65
  end