gcloud 0.5.0 → 0.6.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 (52) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +8 -0
  3. data/lib/gcloud.rb +48 -30
  4. data/lib/gcloud/bigquery.rb +4 -6
  5. data/lib/gcloud/bigquery/connection.rb +2 -14
  6. data/lib/gcloud/bigquery/dataset.rb +41 -42
  7. data/lib/gcloud/bigquery/project.rb +50 -46
  8. data/lib/gcloud/bigquery/query_job.rb +7 -8
  9. data/lib/gcloud/bigquery/table.rb +54 -55
  10. data/lib/gcloud/bigquery/table/schema.rb +30 -40
  11. data/lib/gcloud/bigquery/view.rb +10 -11
  12. data/lib/gcloud/credentials.rb +19 -25
  13. data/lib/gcloud/datastore.rb +4 -6
  14. data/lib/gcloud/datastore/dataset.rb +3 -5
  15. data/lib/gcloud/dns.rb +4 -6
  16. data/lib/gcloud/dns/connection.rb +17 -16
  17. data/lib/gcloud/dns/importer.rb +5 -11
  18. data/lib/gcloud/dns/project.rb +11 -12
  19. data/lib/gcloud/dns/zone.rb +52 -92
  20. data/lib/gcloud/dns/zone/transaction.rb +2 -2
  21. data/lib/gcloud/pubsub.rb +4 -6
  22. data/lib/gcloud/pubsub/connection.rb +1 -12
  23. data/lib/gcloud/pubsub/project.rb +30 -36
  24. data/lib/gcloud/pubsub/subscription.rb +18 -26
  25. data/lib/gcloud/pubsub/topic.rb +16 -26
  26. data/lib/gcloud/resource_manager.rb +5 -6
  27. data/lib/gcloud/resource_manager/connection.rb +4 -4
  28. data/lib/gcloud/resource_manager/manager.rb +10 -14
  29. data/lib/gcloud/resource_manager/project.rb +3 -5
  30. data/lib/gcloud/search.rb +295 -0
  31. data/lib/gcloud/search/api_client.rb +144 -0
  32. data/lib/gcloud/search/connection.rb +146 -0
  33. data/lib/gcloud/search/credentials.rb +30 -0
  34. data/lib/gcloud/search/document.rb +301 -0
  35. data/lib/gcloud/search/document/list.rb +85 -0
  36. data/lib/gcloud/search/errors.rb +67 -0
  37. data/lib/gcloud/search/field_value.rb +164 -0
  38. data/lib/gcloud/search/field_values.rb +263 -0
  39. data/lib/gcloud/search/fields.rb +267 -0
  40. data/lib/gcloud/search/index.rb +613 -0
  41. data/lib/gcloud/search/index/list.rb +90 -0
  42. data/lib/gcloud/search/project.rb +197 -0
  43. data/lib/gcloud/search/result.rb +169 -0
  44. data/lib/gcloud/search/result/list.rb +95 -0
  45. data/lib/gcloud/storage.rb +4 -6
  46. data/lib/gcloud/storage/bucket.rb +55 -43
  47. data/lib/gcloud/storage/bucket/cors.rb +5 -7
  48. data/lib/gcloud/storage/file.rb +35 -30
  49. data/lib/gcloud/storage/file/acl.rb +12 -16
  50. data/lib/gcloud/storage/project.rb +56 -22
  51. data/lib/gcloud/version.rb +1 -1
  52. metadata +20 -3
@@ -171,12 +171,10 @@ module Gcloud
171
171
  #
172
172
  # === Parameters
173
173
  #
174
- # +options+::
175
- # An optional Hash for controlling additional behavior. (+Hash+)
176
- # <code>options[:token]</code>::
174
+ # +token+::
177
175
  # A previously-returned page token representing part of the larger set
178
176
  # of results to view. (+String+)
179
- # <code>options[:max]</code>::
177
+ # +max+::
180
178
  # Maximum number of zones to return. (+Integer+)
181
179
  #
182
180
  # === Returns
@@ -210,9 +208,9 @@ module Gcloud
210
208
  # zones = zones.next
211
209
  # end
212
210
  #
213
- def zones options = {}
211
+ def zones token: nil, max: nil
214
212
  ensure_connection!
215
- resp = connection.list_zones options
213
+ resp = connection.list_zones token: token, max: max
216
214
  if resp.success?
217
215
  Zone::List.from_response resp, connection
218
216
  else
@@ -234,13 +232,11 @@ module Gcloud
234
232
  # +zone_dns+::
235
233
  # The DNS name of this managed zone, for instance "example.com.".
236
234
  # (+String+)
237
- # +options+::
238
- # An optional Hash for controlling additional behavior. (+Hash+)
239
- # <code>options[:description]</code>::
235
+ # +description+::
240
236
  # A string of at most 1024 characters associated with this resource for
241
237
  # the user's convenience. Has no effect on the managed zone's function.
242
238
  # (+String+)
243
- # <code>options[:name_server_set]</code>::
239
+ # +name_server_set+::
244
240
  # A NameServerSet is a set of DNS name servers that all host the same
245
241
  # ManagedZones. Most users will leave this field unset. (+String+)
246
242
  #
@@ -256,9 +252,12 @@ module Gcloud
256
252
  # dns = gcloud.dns
257
253
  # zone = dns.create_zone "example-com", "example.com."
258
254
  #
259
- def create_zone zone_name, zone_dns, options = {}
255
+ def create_zone zone_name, zone_dns, description: nil,
256
+ name_server_set: nil
260
257
  ensure_connection!
261
- resp = connection.create_zone zone_name, zone_dns, options
258
+ resp = connection.create_zone zone_name, zone_dns,
259
+ description: description,
260
+ name_server_set: name_server_set
262
261
  if resp.success?
263
262
  Zone.from_gapi resp.data, connection
264
263
  else
@@ -121,9 +121,7 @@ module Gcloud
121
121
  #
122
122
  # === Parameters
123
123
  #
124
- # +options+::
125
- # An optional Hash for controlling additional behavior. (+Hash+)
126
- # <code>options[:force]</code>::
124
+ # +force+::
127
125
  # If +true+, ensures the deletion of the zone by first deleting all
128
126
  # records. If +false+ and the zone contains non-essential records, the
129
127
  # request will fail. Default is +false+. (+Boolean+)
@@ -150,8 +148,8 @@ module Gcloud
150
148
  # zone = dns.zone "example-com"
151
149
  # zone.delete force: true
152
150
  #
153
- def delete options = {}
154
- clear! if options[:force]
151
+ def delete force: false
152
+ clear! if force
155
153
 
156
154
  ensure_connection!
157
155
  resp = connection.delete_zone id
@@ -222,14 +220,12 @@ module Gcloud
222
220
  #
223
221
  # === Parameters
224
222
  #
225
- # +options+::
226
- # An optional Hash for controlling additional behavior. (+Hash+)
227
- # <code>options[:token]</code>::
223
+ # +token+::
228
224
  # A previously-returned page token representing part of the larger set
229
225
  # of results to view. (+String+)
230
- # <code>options[:max]</code>::
226
+ # +max+::
231
227
  # Maximum number of changes to return. (+Integer+)
232
- # <code>options[:order]</code>::
228
+ # +order+::
233
229
  # Sort the changes by change sequence. (+Symbol+ or +String+)
234
230
  #
235
231
  # Acceptable values are:
@@ -278,13 +274,14 @@ module Gcloud
278
274
  # changes = changes.next
279
275
  # end
280
276
  #
281
- def changes options = {}
277
+ def changes token: nil, max: nil, order: nil
282
278
  ensure_connection!
283
279
  # Fix the sort options
284
- options[:order] = adjust_change_sort_order options[:order]
285
- options[:sort] = "changeSequence" if options[:order]
280
+ order = adjust_change_sort_order order
281
+ sort = "changeSequence" if order
286
282
  # Continue with the API call
287
- resp = connection.list_changes id, options
283
+ resp = connection.list_changes id, token: token, max: max,
284
+ order: order, sort: sort
288
285
  if resp.success?
289
286
  Change::List.from_response resp, self
290
287
  else
@@ -304,12 +301,10 @@ module Gcloud
304
301
  # Return only records with this {record
305
302
  # type}[https://cloud.google.com/dns/what-is-cloud-dns].
306
303
  # If present, the +name+ parameter must also be present. (+String+)
307
- # +options+::
308
- # An optional Hash for controlling additional behavior. (+Hash+)
309
- # <code>options[:token]</code>::
304
+ # +token+::
310
305
  # A previously-returned page token representing part of the larger set
311
306
  # of results to view. (+String+)
312
- # <code>options[:max]</code>::
307
+ # +max+::
313
308
  # Maximum number of records to return. (+Integer+)
314
309
  #
315
310
  # === Returns
@@ -367,12 +362,12 @@ module Gcloud
367
362
  # zone = dns.zone "example-com"
368
363
  # records = zone.records.all
369
364
  #
370
- def records name = nil, type = nil, options = {}
365
+ def records name = nil, type = nil, token: nil, max: nil
371
366
  ensure_connection!
372
367
 
373
- options = build_records_options name, type, options
368
+ name = fqdn(name) if name
374
369
 
375
- resp = connection.list_records id, options
370
+ resp = connection.list_records id, name, type, token: token, max: max
376
371
  if resp.success?
377
372
  Record::List.from_response resp, self
378
373
  else
@@ -463,16 +458,14 @@ module Gcloud
463
458
  # +path_or_io+::
464
459
  # The path to a zone file on the filesystem, or an IO instance from
465
460
  # which zone file data can be read. (+String+ or +IO+)
466
- # +options+::
467
- # An optional Hash for controlling additional behavior. (+Hash+)
468
- # <code>options[:only]</code>::
461
+ # +only+::
469
462
  # Include only records of this type or types. (+String+ or +Array+)
470
- # <code>options[:except]</code>::
463
+ # +except+::
471
464
  # Exclude records of this type or types. (+String+ or +Array+)
472
- # <code>options[:skip_soa]</code>::
465
+ # +skip_soa+::
473
466
  # Do not automatically update the SOA record serial number. See #update
474
467
  # for details. (+Boolean+)
475
- # <code>options[:soa_serial]</code>::
468
+ # +soa_serial+::
476
469
  # A value (or a lambda or Proc returning a value) for the new SOA record
477
470
  # serial number. See #update for details. (+Integer+, lambda, or +Proc+)
478
471
  #
@@ -489,11 +482,12 @@ module Gcloud
489
482
  # zone = dns.zone "example-com"
490
483
  # change = zone.import "path/to/db.example.com"
491
484
  #
492
- def import path_or_io, options = {}
493
- options[:except] = Array(options[:except]).map(&:to_s).map(&:upcase)
494
- options[:except] = (options[:except] + %w(SOA NS)).uniq
495
- additions = Gcloud::Dns::Importer.new(self, path_or_io).records(options)
496
- update additions, []
485
+ def import path_or_io, only: nil, except: nil,
486
+ skip_soa: nil, soa_serial: nil
487
+ except = (Array(except).map(&:to_s).map(&:upcase) + %w(SOA NS)).uniq
488
+ importer = Gcloud::Dns::Importer.new self, path_or_io
489
+ additions = importer.records only: only, except: except
490
+ update additions, [], skip_soa: skip_soa, soa_serial: soa_serial
497
491
  end
498
492
 
499
493
  # rubocop:disable all
@@ -516,11 +510,9 @@ module Gcloud
516
510
  # The Record or array of records to add. (Record or +Array+)
517
511
  # +deletions+::
518
512
  # The Record or array of records to remove. (Record or +Array+)
519
- # +options+::
520
- # An optional Hash for controlling additional behavior. (+Hash+)
521
- # <code>options[:skip_soa]</code>::
513
+ # +skip_soa+::
522
514
  # Do not automatically update the SOA record serial number. (+Boolean+)
523
- # <code>options[:soa_serial]</code>::
515
+ # +soa_serial+::
524
516
  # A value (or a lambda or Proc returning a value) for the new SOA record
525
517
  # serial number. (+Integer+, lambda, or +Proc+)
526
518
  #
@@ -571,7 +563,7 @@ module Gcloud
571
563
  # new_record = zone.record "example.com.", "A", 86400, ["1.2.3.4"]
572
564
  # change = zone.update new_record, soa_serial: lambda { |sn| sn + 10 }
573
565
  #
574
- def update additions = [], deletions = [], options = {}
566
+ def update additions = [], deletions = [], skip_soa: nil, soa_serial: nil
575
567
  # Handle only sending in options
576
568
  if additions.is_a?(::Hash) && deletions.empty? && options.empty?
577
569
  options = additions
@@ -594,8 +586,8 @@ module Gcloud
594
586
  to_add = additions - deletions
595
587
  to_remove = deletions - additions
596
588
  return nil if to_add.empty? && to_remove.empty?
597
- unless options[:skip_soa] || detect_soa(to_add) || detect_soa(to_remove)
598
- increment_soa to_add, to_remove, options[:soa_serial]
589
+ unless skip_soa || detect_soa(to_add) || detect_soa(to_remove)
590
+ increment_soa to_add, to_remove, soa_serial
599
591
  end
600
592
  create_change to_add, to_remove
601
593
  end
@@ -627,12 +619,10 @@ module Gcloud
627
619
  # (section 3.6.1)}[http://tools.ietf.org/html/rfc1034#section-3.6.1].
628
620
  # For example: +192.0.2.1+ or +example.com.+. (+String+ or +Array+ of
629
621
  # +String+)
630
- # +options+::
631
- # An optional Hash for controlling additional behavior. (+Hash+)
632
- # <code>options[:skip_soa]</code>::
622
+ # +skip_soa+::
633
623
  # Do not automatically update the SOA record serial number. See #update
634
624
  # for details. (+Boolean+)
635
- # <code>options[:soa_serial]</code>::
625
+ # +soa_serial+::
636
626
  # A value (or a lambda or Proc returning a value) for the new SOA record
637
627
  # serial number. See #update for details. (+Integer+, lambda, or +Proc+)
638
628
  #
@@ -649,8 +639,9 @@ module Gcloud
649
639
  # zone = dns.zone "example-com"
650
640
  # change = zone.add "example.com.", "A", 86400, ["1.2.3.4"]
651
641
  #
652
- def add name, type, ttl, data, options = {}
653
- update [record(name, type, ttl, data)], [], options
642
+ def add name, type, ttl, data, skip_soa: nil, soa_serial: nil
643
+ update [record(name, type, ttl, data)], [],
644
+ skip_soa: skip_soa, soa_serial: soa_serial
654
645
  end
655
646
 
656
647
  ##
@@ -669,12 +660,10 @@ module Gcloud
669
660
  # The identifier of a {supported record
670
661
  # type}[https://cloud.google.com/dns/what-is-cloud-dns].
671
662
  # For example: +A+, +AAAA+, +CNAME+, +MX+, or +TXT+. (+String+)
672
- # +options+::
673
- # An optional Hash for controlling additional behavior. (+Hash+)
674
- # <code>options[:skip_soa]</code>::
663
+ # +skip_soa+::
675
664
  # Do not automatically update the SOA record serial number. See #update
676
665
  # for details. (+Boolean+)
677
- # <code>options[:soa_serial]</code>::
666
+ # +soa_serial+::
678
667
  # A value (or a lambda or Proc returning a value) for the new SOA record
679
668
  # serial number. See #update for details. (+Integer+, lambda, or +Proc+)
680
669
  #
@@ -691,8 +680,9 @@ module Gcloud
691
680
  # zone = dns.zone "example-com"
692
681
  # change = zone.remove "example.com.", "A"
693
682
  #
694
- def remove name, type, options = {}
695
- update [], records(name: name, type: type).all.to_a, options
683
+ def remove name, type, skip_soa: nil, soa_serial: nil
684
+ update [], records(name, type).all.to_a,
685
+ skip_soa: skip_soa, soa_serial: soa_serial
696
686
  end
697
687
 
698
688
  ##
@@ -721,12 +711,10 @@ module Gcloud
721
711
  # 3.6.1)}[http://tools.ietf.org/html/rfc1034#section-3.6.1]. For
722
712
  # example: +192.0.2.1+ or +example.com.+. (+String+ or +Array+ of
723
713
  # +String+)
724
- # +options+::
725
- # An optional Hash for controlling additional behavior. (+Hash+)
726
- # <code>options[:skip_soa]</code>::
714
+ # +skip_soa+::
727
715
  # Do not automatically update the SOA record serial number. See #update
728
716
  # for details. (+Boolean+)
729
- # <code>options[:soa_serial]</code>::
717
+ # +soa_serial+::
730
718
  # A value (or a lambda or Proc returning a value) for the new SOA record
731
719
  # serial number. See #update for details. (+Integer+, lambda, or +Proc+)
732
720
  #
@@ -743,10 +731,10 @@ module Gcloud
743
731
  # zone = dns.zone "example-com"
744
732
  # change = zone.replace "example.com.", "A", 86400, ["5.6.7.8"]
745
733
  #
746
- def replace name, type, ttl, data, options = {}
734
+ def replace name, type, ttl, data, skip_soa: nil, soa_serial: nil
747
735
  update [record(name, type, ttl, data)],
748
- records(name: name, type: type).all.to_a,
749
- options
736
+ records(name, type).all.to_a,
737
+ skip_soa: skip_soa, soa_serial: soa_serial
750
738
  end
751
739
 
752
740
  def to_zonefile #:nodoc:
@@ -768,12 +756,10 @@ module Gcloud
768
756
  # The identifier of a {supported record
769
757
  # type}[https://cloud.google.com/dns/what-is-cloud-dns].
770
758
  # For example: +A+, +AAAA+, +CNAME+, +MX+, or +TXT+. (+String+)
771
- # +options+::
772
- # An optional Hash for controlling additional behavior. (+Hash+)
773
- # <code>options[:skip_soa]</code>::
759
+ # +skip_soa+::
774
760
  # Do not automatically update the SOA record serial number. See #update
775
761
  # for details. (+Boolean+)
776
- # <code>options[:soa_serial]</code>::
762
+ # +soa_serial+::
777
763
  # A value (or a lambda or Proc returning a value) for the new SOA record
778
764
  # serial number. See #update for details. (+Integer+, lambda, or +Proc+)
779
765
  #
@@ -792,11 +778,11 @@ module Gcloud
792
778
  # mx.ttl = 3600 # change only the TTL
793
779
  # end
794
780
  #
795
- def modify name, type, options = {}
796
- existing = records(name: name, type: type).all.to_a
781
+ def modify name, type, skip_soa: nil, soa_serial: nil
782
+ existing = records(name, type).all.to_a
797
783
  updated = existing.map(&:dup)
798
784
  updated.each { |r| yield r }
799
- update updated, existing, options
785
+ update updated, existing, skip_soa: skip_soa, soa_serial: soa_serial
800
786
  end
801
787
 
802
788
  ##
@@ -847,32 +833,6 @@ module Gcloud
847
833
  fail "Must have active connection" unless connection
848
834
  end
849
835
 
850
- # rubocop:disable all
851
- # Disabled rubocop because this complexity cannot easily be avoided.
852
-
853
- def build_records_options name, type, options
854
- # Handle only sending in options
855
- if name.is_a?(::Hash) && type.nil? && options.empty?
856
- options = name
857
- name = nil
858
- elsif type.is_a?(::Hash) && options.empty?
859
- options = type
860
- type = nil
861
- end
862
-
863
- # Set parameters as options, params have priority
864
- options[:name] = name || options[:name]
865
- options[:type] = type || options[:type]
866
-
867
- # Ensure name is a FQDN
868
- options[:name] = fqdn(options[:name]) if options[:name]
869
-
870
- # return only the options
871
- options
872
- end
873
-
874
- # rubocop:enable all
875
-
876
836
  def create_change additions, deletions
877
837
  ensure_connection!
878
838
  resp = connection.create_change id,
@@ -886,7 +846,7 @@ module Gcloud
886
846
  end
887
847
 
888
848
  def increment_soa to_add, to_remove, soa_serial
889
- current_soa = detect_soa records(name: dns, type: "SOA").all
849
+ current_soa = detect_soa records(dns, "SOA").all
890
850
  return false if current_soa.nil?
891
851
  updated_soa = current_soa.dup
892
852
  updated_soa.data[0] = replace_soa_serial updated_soa.data[0], soa_serial
@@ -111,7 +111,7 @@ module Gcloud
111
111
  # end
112
112
  #
113
113
  def remove name, type
114
- @deletions += @zone.records(name: name, type: type).all
114
+ @deletions += @zone.records(name, type).all
115
115
  end
116
116
 
117
117
  ##
@@ -180,7 +180,7 @@ module Gcloud
180
180
  # end
181
181
  #
182
182
  def modify name, type
183
- existing = @zone.records(name: name, type: type).all.to_a
183
+ existing = @zone.records(name, type).all.to_a
184
184
  updated = existing.map(&:dup)
185
185
  updated.each { |r| yield r }
186
186
  @additions += updated
data/lib/gcloud/pubsub.rb CHANGED
@@ -31,9 +31,7 @@ module Gcloud
31
31
  # +keyfile+::
32
32
  # Keyfile downloaded from Google Cloud. If file path the file must be
33
33
  # readable. (+String+ or +Hash+)
34
- # +options+::
35
- # An optional Hash for controlling additional behavior. (+Hash+)
36
- # <code>options[:scope]</code>::
34
+ # +scope+::
37
35
  # The OAuth 2.0 scopes controlling the set of resources and operations that
38
36
  # the connection can access. See {Using OAuth 2.0 to Access Google
39
37
  # APIs}[https://developers.google.com/identity/protocols/OAuth2]. (+String+
@@ -56,12 +54,12 @@ module Gcloud
56
54
  # topic = pubsub.topic "my-topic"
57
55
  # topic.publish "task completed"
58
56
  #
59
- def self.pubsub project = nil, keyfile = nil, options = {}
57
+ def self.pubsub project = nil, keyfile = nil, scope: nil
60
58
  project ||= Gcloud::Pubsub::Project.default_project
61
59
  if keyfile.nil?
62
- credentials = Gcloud::Pubsub::Credentials.default options
60
+ credentials = Gcloud::Pubsub::Credentials.default scope: scope
63
61
  else
64
- credentials = Gcloud::Pubsub::Credentials.new keyfile, options
62
+ credentials = Gcloud::Pubsub::Credentials.new keyfile, scope: scope
65
63
  end
66
64
  Gcloud::Pubsub::Project.new project, credentials
67
65
  end
@@ -280,7 +280,7 @@ module Gcloud
280
280
  def subscription_data topic, options = {}
281
281
  deadline = options[:deadline]
282
282
  endpoint = options[:endpoint]
283
- attributes = hashify options[:attributes]
283
+ attributes = (options[:attributes] || {}).to_h
284
284
 
285
285
  data = { topic: topic_path(topic) }
286
286
  data[:ackDeadlineSeconds] = deadline if deadline
@@ -290,17 +290,6 @@ module Gcloud
290
290
  end
291
291
  data
292
292
  end
293
-
294
- ##
295
- # Make sure the object is converted to a hash
296
- # Ruby 1.9.3 doesn't support to_h, so here we are.
297
- def hashify hash
298
- if hash.respond_to? :to_h
299
- hash.to_h
300
- else
301
- Hash.try_convert(hash) || {}
302
- end
303
- end
304
293
  end
305
294
  end
306
295
  end
@@ -85,17 +85,15 @@ module Gcloud
85
85
  #
86
86
  # +topic_name+::
87
87
  # Name of a topic. (+String+)
88
- # +options+::
89
- # An optional Hash for controlling additional behavior. (+Hash+)
90
- # <code>options[:autocreate]</code>::
88
+ # +autocreate+::
91
89
  # Flag to control whether the requested topic will be created if it does
92
90
  # not exist. Ignored if +skip_lookup+ is +true+. The default value is
93
91
  # +false+. (+Boolean+)
94
- # <code>options[:project]</code>::
92
+ # +project+::
95
93
  # If the topic belongs to a project other than the one currently
96
94
  # connected to, the alternate project ID can be specified here.
97
95
  # (+String+)
98
- # <code>options[:skip_lookup]</code>::
96
+ # +skip_lookup+::
99
97
  # Optionally create a Topic object without verifying the topic resource
100
98
  # exists on the Pub/Sub service. Calls made on this object will raise
101
99
  # errors if the topic resource does not exist. Default is +false+.
@@ -150,15 +148,14 @@ module Gcloud
150
148
  # pubsub = gcloud.pubsub
151
149
  # topic = pubsub.topic "another-topic", skip_lookup: true
152
150
  #
153
- def topic topic_name, options = {}
151
+ def topic topic_name, autocreate: nil, project: nil, skip_lookup: nil
154
152
  ensure_connection!
155
- if options[:skip_lookup]
156
- return Topic.new_lazy(topic_name, connection, options)
157
- end
153
+ options = { project: project }
154
+ return Topic.new_lazy(topic_name, connection, options) if skip_lookup
158
155
  resp = connection.get_topic topic_name
159
156
  return Topic.from_gapi(resp.data, connection) if resp.success?
160
157
  if resp.status == 404
161
- return create_topic(topic_name) if options[:autocreate]
158
+ return create_topic(topic_name) if autocreate
162
159
  return nil
163
160
  end
164
161
  fail ApiError.from_response(resp)
@@ -202,14 +199,11 @@ module Gcloud
202
199
  #
203
200
  # === Parameters
204
201
  #
205
- # +options+::
206
- # An optional Hash for controlling additional behavior. (+Hash+)
207
- # (+String+)
208
- # <code>options[:token]</code>::
202
+ # +token+::
209
203
  # The +token+ value returned by the last call to +topics+; indicates
210
204
  # that this is a continuation of a call, and that the system should
211
205
  # return the next page of data. (+String+)
212
- # <code>options[:max]</code>::
206
+ # +max+::
213
207
  # Maximum number of topics to return. (+Integer+)
214
208
  #
215
209
  # === Returns
@@ -248,8 +242,9 @@ module Gcloud
248
242
  # tmp_topics = pubsub.topics token: tmp_topics.token
249
243
  # end
250
244
  #
251
- def topics options = {}
245
+ def topics token: nil, max: nil
252
246
  ensure_connection!
247
+ options = { token: token, max: max }
253
248
  resp = connection.list_topics options
254
249
  if resp.success?
255
250
  Topic::List.from_response resp, connection
@@ -353,15 +348,13 @@ module Gcloud
353
348
  # periods (.), tildes (~), plus (+) or percent signs (%). It must be
354
349
  # between 3 and 255 characters in length, and it must not start with
355
350
  # "goog". (+String+)
356
- # +options+::
357
- # An optional Hash for controlling additional behavior. (+Hash+)
358
- # <code>options[:deadline]</code>::
351
+ # +deadline+::
359
352
  # The maximum number of seconds after a subscriber receives a message
360
353
  # before the subscriber should acknowledge the message. (+Integer+)
361
- # <code>options[:endpoint]</code>::
354
+ # +endpoint+::
362
355
  # A URL locating the endpoint to which messages should be pushed.
363
356
  # e.g. "https://example.com/push" (+String+)
364
- # <code>attributes[:autocreate]</code>::
357
+ # +autocreate+::
365
358
  # Flag to control whether the topic will be created if it does not
366
359
  # exist.
367
360
  #
@@ -411,15 +404,18 @@ module Gcloud
411
404
  #
412
405
  # sub = pubsub.subscribe "new-topic", "new-topic-sub", autocreate: true
413
406
  #
414
- def subscribe topic_name, subscription_name, options = {}
407
+ def subscribe topic_name, subscription_name, deadline: nil, endpoint: nil,
408
+ autocreate: nil
415
409
  ensure_connection!
410
+ options = { deadline: deadline, endpoint: endpoint }
416
411
  resp = connection.create_subscription topic_name,
417
412
  subscription_name, options
418
413
  return Subscription.from_gapi(resp.data, connection) if resp.success?
419
- if options[:autocreate] && resp.status == 404
414
+ if autocreate && resp.status == 404
420
415
  create_topic topic_name
421
416
  return subscribe(topic_name, subscription_name,
422
- options.merge(autocreate: false))
417
+ deadline: deadline, endpoint: endpoint,
418
+ autocreate: false)
423
419
  end
424
420
  fail ApiError.from_response(resp)
425
421
  end
@@ -433,13 +429,11 @@ module Gcloud
433
429
  #
434
430
  # +subscription_name+::
435
431
  # Name of a subscription. (+String+)
436
- # +options+::
437
- # An optional Hash for controlling additional behavior. (+Hash+)
438
- # <code>options[:project]</code>::
432
+ # +project+::
439
433
  # If the subscription belongs to a project other than the one currently
440
434
  # connected to, the alternate project ID can be specified here.
441
435
  # (+String+)
442
- # <code>options[:skip_lookup]</code>::
436
+ # +skip_lookup+::
443
437
  # Optionally create a Subscription object without verifying the
444
438
  # subscription resource exists on the Pub/Sub service. Calls made on
445
439
  # this object will raise errors if the service resource does not exist.
@@ -471,9 +465,10 @@ module Gcloud
471
465
  # subscription = pubsub.subscription "my-sub", skip_lookup: true
472
466
  # puts subscription.name
473
467
  #
474
- def subscription subscription_name, options = {}
468
+ def subscription subscription_name, project: nil, skip_lookup: nil
475
469
  ensure_connection!
476
- if options[:skip_lookup]
470
+ options = { project: project }
471
+ if skip_lookup
477
472
  return Subscription.new_lazy(subscription_name, connection, options)
478
473
  end
479
474
  resp = connection.get_subscription subscription_name
@@ -489,15 +484,13 @@ module Gcloud
489
484
  #
490
485
  # === Parameters
491
486
  #
492
- # +options+::
493
- # An optional Hash for controlling additional behavior. (+Hash+)
494
- # <code>options[:prefix]</code>::
487
+ # +prefix+::
495
488
  # Filter results to subscriptions whose names begin with this prefix.
496
489
  # (+String+)
497
- # <code>options[:token]</code>::
490
+ # +token+::
498
491
  # A previously-returned page token representing part of the larger set
499
492
  # of results to view. (+String+)
500
- # <code>options[:max]</code>::
493
+ # +max+::
501
494
  # Maximum number of subscriptions to return. (+Integer+)
502
495
  #
503
496
  # === Returns
@@ -537,8 +530,9 @@ module Gcloud
537
530
  # tmp_subs = pubsub.subscriptions token: tmp_subs.token
538
531
  # end
539
532
  #
540
- def subscriptions options = {}
533
+ def subscriptions prefix: nil, token: nil, max: nil
541
534
  ensure_connection!
535
+ options = { prefix: prefix, token: token, max: max }
542
536
  resp = connection.list_subscriptions options
543
537
  if resp.success?
544
538
  Subscription::List.from_response resp, connection