gcloud 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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