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
@@ -46,17 +46,17 @@ module Gcloud
46
46
  "owner" => "OWNER" }
47
47
 
48
48
  # @private
49
- SCOPES = { "user" => "userByEmail",
50
- "user_by_email" => "userByEmail",
51
- "userByEmail" => "userByEmail",
52
- "group" => "groupByEmail",
53
- "group_by_email" => "groupByEmail",
54
- "groupByEmail" => "groupByEmail",
55
- "domain" => "domain",
56
- "special" => "specialGroup",
57
- "special_group" => "specialGroup",
58
- "specialGroup" => "specialGroup",
59
- "view" => "view" }
49
+ SCOPES = { "user" => :user_by_email,
50
+ "user_by_email" => :user_by_email,
51
+ "userByEmail" => :user_by_email,
52
+ "group" => :group_by_email,
53
+ "group_by_email" => :group_by_email,
54
+ "groupByEmail" => :group_by_email,
55
+ "domain" => :domain,
56
+ "special" => :special_group,
57
+ "special_group" => :special_group,
58
+ "specialGroup" => :special_group,
59
+ "view" => :view }
60
60
 
61
61
  # @private
62
62
  GROUPS = { "owners" => "projectOwners",
@@ -72,22 +72,37 @@ module Gcloud
72
72
  "all_authenticated_users" => "allAuthenticatedUsers",
73
73
  "allAuthenticatedUsers" => "allAuthenticatedUsers" }
74
74
 
75
- # @private
76
- attr_reader :access
77
-
78
75
  ##
79
76
  # @private
80
77
  # Initialized a new Access object.
81
- # Must provide a valid Dataset object.
82
- def initialize access, context
83
- @original = access.dup
84
- @access = access.dup
85
- @context = context
78
+ # Must provide a valid Google::Apis::BigqueryV2::Dataset object.
79
+ # Access will mutate the gapi object.
80
+ def initialize
81
+ @rules = [] # easiest to do this in the constructor
82
+ @original_rules_hashes = @rules.map(&:to_h)
86
83
  end
87
84
 
88
85
  # @private
89
86
  def changed?
90
- @original != @access
87
+ @original_rules_hashes != @rules.map(&:to_h)
88
+ end
89
+
90
+ # @private
91
+ def empty?
92
+ @rules.empty?
93
+ end
94
+
95
+ # @private
96
+ def freeze
97
+ @rules = @rules.map(&:dup).map(&:freeze)
98
+ @rules.freeze
99
+ super
100
+ end
101
+
102
+ ##
103
+ # @private View the access rules as an array of hashes.
104
+ def to_a
105
+ @rules.map(&:to_h)
91
106
  end
92
107
 
93
108
  ##
@@ -123,7 +138,7 @@ module Gcloud
123
138
  # Reference](https://cloud.google.com/bigquery/query-reference#from):
124
139
  # +project_name:datasetId.tableId+.
125
140
  def add_reader_view view
126
- add_access_role_scope_value :reader, :view, view
141
+ add_access_view view
127
142
  end
128
143
 
129
144
  ##
@@ -151,17 +166,6 @@ module Gcloud
151
166
  add_access_role_scope_value :writer, :special, group
152
167
  end
153
168
 
154
- ##
155
- # Add writer access to a view.
156
- # The view can be a Gcloud::Bigquery::View object,
157
- # or a string identifier as specified by the
158
- # [Query
159
- # Reference](https://cloud.google.com/bigquery/query-reference#from):
160
- # +project_name:datasetId.tableId+.
161
- def add_writer_view view
162
- add_access_role_scope_value :writer, :view, view
163
- end
164
-
165
169
  ##
166
170
  # Add owner access to a user.
167
171
  def add_owner_user email
@@ -187,17 +191,6 @@ module Gcloud
187
191
  add_access_role_scope_value :owner, :special, group
188
192
  end
189
193
 
190
- ##
191
- # Add owner access to a view.
192
- # The view can be a Gcloud::Bigquery::View object,
193
- # or a string identifier as specified by the
194
- # [Query
195
- # Reference](https://cloud.google.com/bigquery/query-reference#from):
196
- # +project_name:datasetId.tableId+.
197
- def add_owner_view view
198
- add_access_role_scope_value :owner, :view, view
199
- end
200
-
201
194
  ##
202
195
  # Remove reader access from a user.
203
196
  def remove_reader_user email
@@ -231,7 +224,7 @@ module Gcloud
231
224
  # Reference](https://cloud.google.com/bigquery/query-reference#from):
232
225
  # +project_name:datasetId.tableId+.
233
226
  def remove_reader_view view
234
- remove_access_role_scope_value :reader, :view, view
227
+ remove_access_view view
235
228
  end
236
229
 
237
230
  ##
@@ -259,17 +252,6 @@ module Gcloud
259
252
  remove_access_role_scope_value :writer, :special, group
260
253
  end
261
254
 
262
- ##
263
- # Remove writer access from a view.
264
- # The view can be a Gcloud::Bigquery::View object,
265
- # or a string identifier as specified by the
266
- # [Query
267
- # Reference](https://cloud.google.com/bigquery/query-reference#from):
268
- # +project_name:datasetId.tableId+.
269
- def remove_writer_view view
270
- remove_access_role_scope_value :writer, :view, view
271
- end
272
-
273
255
  ##
274
256
  # Remove owner access from a user.
275
257
  def remove_owner_user email
@@ -295,17 +277,6 @@ module Gcloud
295
277
  remove_access_role_scope_value :owner, :special, group
296
278
  end
297
279
 
298
- ##
299
- # Remove owner access from a view.
300
- # The view can be a Gcloud::Bigquery::View object,
301
- # or a string identifier as specified by the
302
- # [Query
303
- # Reference](https://cloud.google.com/bigquery/query-reference#from):
304
- # +project_name:datasetId.tableId+.
305
- def remove_owner_view view
306
- remove_access_role_scope_value :owner, :view, view
307
- end
308
-
309
280
  ##
310
281
  # Checks reader access for a user.
311
282
  def reader_user? email
@@ -339,7 +310,7 @@ module Gcloud
339
310
  # Reference](https://cloud.google.com/bigquery/query-reference#from):
340
311
  # +project_name:datasetId.tableId+.
341
312
  def reader_view? view
342
- lookup_access_role_scope_value :reader, :view, view
313
+ lookup_access_view view
343
314
  end
344
315
 
345
316
  ##
@@ -367,17 +338,6 @@ module Gcloud
367
338
  lookup_access_role_scope_value :writer, :special, group
368
339
  end
369
340
 
370
- ##
371
- # Checks writer access for a view.
372
- # The view can be a Gcloud::Bigquery::View object,
373
- # or a string identifier as specified by the
374
- # [Query
375
- # Reference](https://cloud.google.com/bigquery/query-reference#from):
376
- # +project_name:datasetId.tableId+.
377
- def writer_view? view
378
- lookup_access_role_scope_value :writer, :view, view
379
- end
380
-
381
341
  ##
382
342
  # Checks owner access for a user.
383
343
  def owner_user? email
@@ -403,15 +363,21 @@ module Gcloud
403
363
  lookup_access_role_scope_value :owner, :special, group
404
364
  end
405
365
 
406
- ##
407
- # Checks owner access for a view.
408
- # The view can be a Gcloud::Bigquery::View object,
409
- # or a string identifier as specified by the
410
- # [Query
411
- # Reference](https://cloud.google.com/bigquery/query-reference#from):
412
- # +project_name:datasetId.tableId+.
413
- def owner_view? view
414
- lookup_access_role_scope_value :owner, :view, view
366
+ # @private
367
+ def self.from_gapi gapi
368
+ rules = Array gapi.access
369
+ new.tap do |s|
370
+ s.instance_variable_set :@rules, rules
371
+ s.instance_variable_set :@original_rules_hashes,
372
+ rules.map(&:to_h)
373
+ s.instance_variable_set :@dataset_reference,
374
+ gapi.dataset_reference
375
+ end
376
+ end
377
+
378
+ # @private
379
+ def to_gapi
380
+ @rules
415
381
  end
416
382
 
417
383
  protected
@@ -446,46 +412,94 @@ module Gcloud
446
412
  if view.respond_to? :table_ref
447
413
  view.table_ref
448
414
  else
449
- Connection.table_ref_from_s view, @context
415
+ Service.table_ref_from_s view, @dataset_reference
450
416
  end
451
417
  end
452
418
 
453
419
  # @private
454
420
  def add_access_role_scope_value role, scope, value
455
- role = validate_role role
421
+ role = validate_role(role)
456
422
  scope = validate_scope scope
457
423
  # If scope is special group, make sure value is in the list
458
- value = validate_special_group(value) if scope == "specialGroup"
459
- # If scope is view, make sure value is in the right format
460
- value = validate_view(value) if scope == "view"
424
+ value = validate_special_group(value) if scope == :special_group
461
425
  # Remove any rules of this scope and value
462
- access.reject! { |h| h[scope] == value }
426
+ @rules.reject!(&find_by_scope_and_value(scope, value))
427
+ # Add new rule for this role, scope, and value
428
+ opts = { role: role, scope => value }
429
+ @rules << Google::Apis::BigqueryV2::Dataset::Access.new(opts)
430
+ end
431
+
432
+ # @private
433
+ def add_access_view value
434
+ # scope is view, make sure value is in the right format
435
+ value = validate_view(value)
436
+ # Remove existing view rule, if any
437
+ @rules.reject!(&find_view(value))
463
438
  # Add new rule for this role, scope, and value
464
- access << { "role" => role, scope => value }
439
+ opts = { view: value }
440
+ @rules << Google::Apis::BigqueryV2::Dataset::Access.new(opts)
465
441
  end
466
442
 
467
443
  # @private
468
444
  def remove_access_role_scope_value role, scope, value
469
- role = validate_role role
445
+ role = validate_role(role)
470
446
  scope = validate_scope scope
471
447
  # If scope is special group, make sure value is in the list
472
- value = validate_special_group(value) if scope == "specialGroup"
473
- # If scope is view, make sure value is in the right format
474
- value = validate_view(value) if scope == "view"
448
+ value = validate_special_group(value) if scope == :special_group
475
449
  # Remove any rules of this role, scope, and value
476
- access.reject! { |h| h["role"] == role && h[scope] == value }
450
+ @rules.reject!(
451
+ &find_by_role_and_scope_and_value(role, scope, value))
452
+ end
453
+
454
+ # @private
455
+ def remove_access_view value
456
+ # scope is view, make sure value is in the right format
457
+ value = validate_view(value)
458
+ # Remove existing view rule, if any
459
+ @rules.reject!(&find_view(value))
477
460
  end
478
461
 
479
462
  # @private
480
463
  def lookup_access_role_scope_value role, scope, value
481
- role = validate_role role
464
+ role = validate_role(role)
482
465
  scope = validate_scope scope
483
466
  # If scope is special group, make sure value is in the list
484
- value = validate_special_group(value) if scope == "specialGroup"
485
- # If scope is view, make sure value is in the right format
486
- value = validate_view(value) if scope == "view"
467
+ value = validate_special_group(value) if scope == :special_group
487
468
  # Detect any rules of this role, scope, and value
488
- !(!access.detect { |h| h["role"] == role && h[scope] == value })
469
+ !(!@rules.detect(
470
+ &find_by_role_and_scope_and_value(role, scope, value)))
471
+ end
472
+
473
+ # @private
474
+ def lookup_access_view value
475
+ # scope is view, make sure value is in the right format
476
+ value = validate_view(value)
477
+ # Detect view rule, if any
478
+ !(!@rules.detect(&find_view(value)))
479
+ end
480
+
481
+ # @private
482
+ def find_by_role_and_scope_and_value role, scope, value
483
+ lambda do |a|
484
+ h = a.to_h
485
+ h[:role] == role && h[scope] == value
486
+ end
487
+ end
488
+
489
+ # @private
490
+ def find_by_scope_and_value scope, value
491
+ lambda do |a|
492
+ h = a.to_h
493
+ h[scope] == value
494
+ end
495
+ end
496
+
497
+ # @private
498
+ def find_view value
499
+ lambda do |a|
500
+ h = a.to_h
501
+ h[:view].to_h == value.to_h
502
+ end
489
503
  end
490
504
  end
491
505
  end
@@ -71,14 +71,10 @@ module Gcloud
71
71
  # end
72
72
  def next
73
73
  return nil unless next?
74
- ensure_connection!
74
+ ensure_service!
75
75
  options = { all: @hidden, token: token, max: @max }
76
- resp = @connection.list_datasets options
77
- if resp.success?
78
- self.class.from_response resp, @connection
79
- else
80
- fail ApiError.from_response(resp)
81
- end
76
+ gapi = @service.list_datasets options
77
+ self.class.from_gapi gapi, @service, @hidden, @max
82
78
  end
83
79
 
84
80
  ##
@@ -148,24 +144,24 @@ module Gcloud
148
144
 
149
145
  ##
150
146
  # @private New Dataset::List from a response object.
151
- def self.from_response resp, conn, hidden = nil, max = nil
152
- datasets = List.new(Array(resp.data["datasets"]).map do |gapi_object|
153
- Dataset.from_gapi gapi_object, conn
147
+ def self.from_gapi gapi_list, service, hidden = nil, max = nil
148
+ datasets = List.new(Array(gapi_list.datasets).map do |gapi_object|
149
+ Dataset.from_gapi gapi_object, service
154
150
  end)
155
- datasets.instance_variable_set "@token", resp.data["nextPageToken"]
156
- datasets.instance_variable_set "@etag", resp.data["etag"]
157
- datasets.instance_variable_set "@connection", conn
158
- datasets.instance_variable_set "@hidden", hidden
159
- datasets.instance_variable_set "@max", max
151
+ datasets.instance_variable_set :@token, gapi_list.next_page_token
152
+ datasets.instance_variable_set :@etag, gapi_list.etag
153
+ datasets.instance_variable_set :@service, service
154
+ datasets.instance_variable_set :@hidden, hidden
155
+ datasets.instance_variable_set :@max, max
160
156
  datasets
161
157
  end
162
158
 
163
159
  protected
164
160
 
165
161
  ##
166
- # Raise an error unless an active connection is available.
167
- def ensure_connection!
168
- fail "Must have active connection" unless @connection
162
+ # Raise an error unless an active service is available.
163
+ def ensure_service!
164
+ fail "Must have active connection" unless @service
169
165
  end
170
166
  end
171
167
  end
@@ -32,25 +32,25 @@ module Gcloud
32
32
  # The URI or URIs representing the Google Cloud Storage files to which
33
33
  # the data is exported.
34
34
  def destinations
35
- Array config["extract"]["destinationUris"]
35
+ Array @gapi.configuration.extract.destination_uris
36
36
  end
37
37
 
38
38
  ##
39
39
  # The table from which the data is exported. This is the table upon
40
40
  # which {Table#extract} was called. Returns a {Table} instance.
41
41
  def source
42
- table = config["extract"]["sourceTable"]
42
+ table = @gapi.configuration.extract.source_table
43
43
  return nil unless table
44
- retrieve_table table["projectId"],
45
- table["datasetId"],
46
- table["tableId"]
44
+ retrieve_table table.project_id,
45
+ table.dataset_id,
46
+ table.table_id
47
47
  end
48
48
 
49
49
  ##
50
50
  # Checks if the export operation compresses the data using gzip. The
51
51
  # default is `false`.
52
52
  def compression?
53
- val = config["extract"]["compression"]
53
+ val = @gapi.configuration.extract.compression
54
54
  val == "GZIP"
55
55
  end
56
56
 
@@ -58,7 +58,7 @@ module Gcloud
58
58
  # Checks if the destination format for the data is [newline-delimited
59
59
  # JSON](http://jsonlines.org/). The default is `false`.
60
60
  def json?
61
- val = config["extract"]["destinationFormat"]
61
+ val = @gapi.configuration.extract.destination_format
62
62
  val == "NEWLINE_DELIMITED_JSON"
63
63
  end
64
64
 
@@ -66,7 +66,7 @@ module Gcloud
66
66
  # Checks if the destination format for the data is CSV. Tables with nested
67
67
  # or repeated fields cannot be exported as CSV. The default is `true`.
68
68
  def csv?
69
- val = config["extract"]["destinationFormat"]
69
+ val = @gapi.configuration.extract.destination_format
70
70
  return true if val.nil?
71
71
  val == "CSV"
72
72
  end
@@ -75,7 +75,7 @@ module Gcloud
75
75
  # Checks if the destination format for the data is
76
76
  # [Avro](http://avro.apache.org/). The default is `false`.
77
77
  def avro?
78
- val = config["extract"]["destinationFormat"]
78
+ val = @gapi.configuration.extract.destination_format
79
79
  val == "AVRO"
80
80
  end
81
81
 
@@ -83,7 +83,7 @@ module Gcloud
83
83
  # The symbol the operation uses to delimit fields in the exported data.
84
84
  # The default is a comma (,).
85
85
  def delimiter
86
- val = config["extract"]["fieldDelimiter"]
86
+ val = @gapi.configuration.extract.field_delimiter
87
87
  val = "," if val.nil?
88
88
  val
89
89
  end
@@ -92,7 +92,7 @@ module Gcloud
92
92
  # Checks if the exported data contains a header row. The default is
93
93
  # `true`.
94
94
  def print_header?
95
- val = config["extract"]["printHeader"]
95
+ val = @gapi.configuration.extract.print_header
96
96
  val = true if val.nil?
97
97
  val
98
98
  end
@@ -102,7 +102,7 @@ module Gcloud
102
102
  # {#destinations}. Returns an Array of values in the same order as the URI
103
103
  # patterns.
104
104
  def destinations_file_counts
105
- Array stats["extract"]["destinationUriFileCounts"]
105
+ Array @gapi.statistics.extract.destination_uri_file_counts
106
106
  end
107
107
 
108
108
  ##