google-cloud-pubsub 0.20.1 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -40,10 +40,9 @@ module Google
40
40
  # @return [Boolean]
41
41
  #
42
42
  # @example
43
- # require "google/cloud"
43
+ # require "google/cloud/pubsub"
44
44
  #
45
- # gcloud = Google::Cloud.new
46
- # pubsub = gcloud.pubsub
45
+ # pubsub = Google::Cloud::Pubsub.new
47
46
  #
48
47
  # topics = pubsub.topics
49
48
  # if topics.next?
@@ -60,10 +59,9 @@ module Google
60
59
  # @return [Topic::List]
61
60
  #
62
61
  # @example
63
- # require "google/cloud"
62
+ # require "google/cloud/pubsub"
64
63
  #
65
- # gcloud = Google::Cloud.new
66
- # pubsub = gcloud.pubsub
64
+ # pubsub = Google::Cloud::Pubsub.new
67
65
  #
68
66
  # topics = pubsub.topics
69
67
  # if topics.next?
@@ -97,10 +95,9 @@ module Google
97
95
  # @return [Enumerator]
98
96
  #
99
97
  # @example Iterating each topic by passing a block:
100
- # require "google/cloud"
98
+ # require "google/cloud/pubsub"
101
99
  #
102
- # gcloud = Google::Cloud.new
103
- # pubsub = gcloud.pubsub
100
+ # pubsub = Google::Cloud::Pubsub.new
104
101
  #
105
102
  # topics = pubsub.topics
106
103
  # topics.all do |topic|
@@ -108,10 +105,9 @@ module Google
108
105
  # end
109
106
  #
110
107
  # @example Using the enumerator by not passing a block:
111
- # require "google/cloud"
108
+ # require "google/cloud/pubsub"
112
109
  #
113
- # gcloud = Google::Cloud.new
114
- # pubsub = gcloud.pubsub
110
+ # pubsub = Google::Cloud::Pubsub.new
115
111
  #
116
112
  # topics = pubsub.topics
117
113
  # all_names = topics.all.map do |topic|
@@ -119,10 +115,9 @@ module Google
119
115
  # end
120
116
  #
121
117
  # @example Limit the number of API calls made:
122
- # require "google/cloud"
118
+ # require "google/cloud/pubsub"
123
119
  #
124
- # gcloud = Google::Cloud.new
125
- # pubsub = gcloud.pubsub
120
+ # pubsub = Google::Cloud::Pubsub.new
126
121
  #
127
122
  # topics = pubsub.topics
128
123
  # topics.all(request_limit: 10) do |topic|
@@ -21,10 +21,9 @@ module Google
21
21
  # Topic Publisher object used to publish multiple messages at once.
22
22
  #
23
23
  # @example
24
- # require "google/cloud"
24
+ # require "google/cloud/pubsub"
25
25
  #
26
- # gcloud = Google::Cloud.new
27
- # pubsub = gcloud.pubsub
26
+ # pubsub = Google::Cloud::Pubsub.new
28
27
  #
29
28
  # topic = pubsub.topic "my-topic"
30
29
  # msgs = topic.publish do |t|
@@ -26,7 +26,8 @@ require "json"
26
26
  require "pathname"
27
27
 
28
28
  require "google/gax"
29
- require "google/pubsub/v1/pubsub_services_pb"
29
+ require "google/iam/v1/iam_policy_pb"
30
+ require "google/pubsub/v1/pubsub_pb"
30
31
 
31
32
  module Google
32
33
  module Cloud
@@ -35,10 +36,12 @@ module Google
35
36
  # The service that an application uses to manipulate topics, and to send
36
37
  # messages to a topic.
37
38
  #
38
- # @!attribute [r] stub
39
+ # @!attribute [r] iam_policy_stub
40
+ # @return [Google::Iam::V1::IAMPolicy::Stub]
41
+ # @!attribute [r] publisher_stub
39
42
  # @return [Google::Pubsub::V1::Publisher::Stub]
40
43
  class PublisherApi
41
- attr_reader :stub
44
+ attr_reader :iam_policy_stub, :publisher_stub
42
45
 
43
46
  # The default address of the service.
44
47
  SERVICE_ADDRESS = "pubsub.googleapis.com".freeze
@@ -163,8 +166,16 @@ module Google
163
166
  timeout: DEFAULT_TIMEOUT,
164
167
  app_name: "gax",
165
168
  app_version: Google::Gax::VERSION
169
+ # These require statements are intentionally placed here to initialize
170
+ # the gRPC module only when it's required.
171
+ # See https://github.com/googleapis/toolkit/issues/446
172
+ require "google/gax/grpc"
173
+ require "google/iam/v1/iam_policy_services_pb"
174
+ require "google/pubsub/v1/pubsub_services_pb"
175
+
166
176
  google_api_client = "#{app_name}/#{app_version} " \
167
- "#{CODE_GEN_NAME_VERSION} ruby/#{RUBY_VERSION}".freeze
177
+ "#{CODE_GEN_NAME_VERSION} gax/#{Google::Gax::VERSION} " \
178
+ "ruby/#{RUBY_VERSION}".freeze
168
179
  headers = { :"x-goog-api-client" => google_api_client }
169
180
  client_config_file = Pathname.new(__dir__).join(
170
181
  "publisher_client_config.json"
@@ -182,7 +193,15 @@ module Google
182
193
  kwargs: headers
183
194
  )
184
195
  end
185
- @stub = Google::Gax::Grpc.create_stub(
196
+ @iam_policy_stub = Google::Gax::Grpc.create_stub(
197
+ service_path,
198
+ port,
199
+ chan_creds: chan_creds,
200
+ channel: channel,
201
+ scopes: scopes,
202
+ &Google::Iam::V1::IAMPolicy::Stub.method(:new)
203
+ )
204
+ @publisher_stub = Google::Gax::Grpc.create_stub(
186
205
  service_path,
187
206
  port,
188
207
  chan_creds: chan_creds,
@@ -191,28 +210,40 @@ module Google
191
210
  &Google::Pubsub::V1::Publisher::Stub.method(:new)
192
211
  )
193
212
 
213
+ @set_iam_policy = Google::Gax.create_api_call(
214
+ @iam_policy_stub.method(:set_iam_policy),
215
+ defaults["set_iam_policy"]
216
+ )
217
+ @get_iam_policy = Google::Gax.create_api_call(
218
+ @iam_policy_stub.method(:get_iam_policy),
219
+ defaults["get_iam_policy"]
220
+ )
221
+ @test_iam_permissions = Google::Gax.create_api_call(
222
+ @iam_policy_stub.method(:test_iam_permissions),
223
+ defaults["test_iam_permissions"]
224
+ )
194
225
  @create_topic = Google::Gax.create_api_call(
195
- @stub.method(:create_topic),
226
+ @publisher_stub.method(:create_topic),
196
227
  defaults["create_topic"]
197
228
  )
198
229
  @publish = Google::Gax.create_api_call(
199
- @stub.method(:publish),
230
+ @publisher_stub.method(:publish),
200
231
  defaults["publish"]
201
232
  )
202
233
  @get_topic = Google::Gax.create_api_call(
203
- @stub.method(:get_topic),
234
+ @publisher_stub.method(:get_topic),
204
235
  defaults["get_topic"]
205
236
  )
206
237
  @list_topics = Google::Gax.create_api_call(
207
- @stub.method(:list_topics),
238
+ @publisher_stub.method(:list_topics),
208
239
  defaults["list_topics"]
209
240
  )
210
241
  @list_topic_subscriptions = Google::Gax.create_api_call(
211
- @stub.method(:list_topic_subscriptions),
242
+ @publisher_stub.method(:list_topic_subscriptions),
212
243
  defaults["list_topic_subscriptions"]
213
244
  )
214
245
  @delete_topic = Google::Gax.create_api_call(
215
- @stub.method(:delete_topic),
246
+ @publisher_stub.method(:delete_topic),
216
247
  defaults["delete_topic"]
217
248
  )
218
249
  end
@@ -233,6 +264,15 @@ module Google
233
264
  # retries, etc.
234
265
  # @return [Google::Pubsub::V1::Topic]
235
266
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
267
+ # @example
268
+ # require "google/cloud/pubsub/v1/publisher_api"
269
+ #
270
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
271
+ #
272
+ # publisher_api = PublisherApi.new
273
+ # formatted_name = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
274
+ # response = publisher_api.create_topic(formatted_name)
275
+
236
276
  def create_topic \
237
277
  name,
238
278
  options: nil
@@ -255,6 +295,20 @@ module Google
255
295
  # retries, etc.
256
296
  # @return [Google::Pubsub::V1::PublishResponse]
257
297
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
298
+ # @example
299
+ # require "google/cloud/pubsub/v1/publisher_api"
300
+ #
301
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
302
+ # PubsubMessage = Google::Pubsub::V1::PubsubMessage
303
+ #
304
+ # publisher_api = PublisherApi.new
305
+ # formatted_topic = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
306
+ # data = ''
307
+ # messages_element = PubsubMessage.new
308
+ # messages_element.data = data
309
+ # messages = [messages_element]
310
+ # response = publisher_api.publish(formatted_topic, messages)
311
+
258
312
  def publish \
259
313
  topic,
260
314
  messages,
@@ -275,6 +329,15 @@ module Google
275
329
  # retries, etc.
276
330
  # @return [Google::Pubsub::V1::Topic]
277
331
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
332
+ # @example
333
+ # require "google/cloud/pubsub/v1/publisher_api"
334
+ #
335
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
336
+ #
337
+ # publisher_api = PublisherApi.new
338
+ # formatted_topic = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
339
+ # response = publisher_api.get_topic(formatted_topic)
340
+
278
341
  def get_topic \
279
342
  topic,
280
343
  options: nil
@@ -303,6 +366,27 @@ module Google
303
366
  # operations such as per-page iteration or access to the response
304
367
  # object.
305
368
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
369
+ # @example
370
+ # require "google/cloud/pubsub/v1/publisher_api"
371
+ #
372
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
373
+ #
374
+ # publisher_api = PublisherApi.new
375
+ # formatted_project = PublisherApi.project_path("[PROJECT]")
376
+ #
377
+ # # Iterate over all results.
378
+ # publisher_api.list_topics(formatted_project).each do |element|
379
+ # # Process element.
380
+ # end
381
+ #
382
+ # # Or iterate over results one page at a time.
383
+ # publisher_api.list_topics(formatted_project).each_page do |page|
384
+ # # Process each page at a time.
385
+ # page.each do |element|
386
+ # # Process element.
387
+ # end
388
+ # end
389
+
306
390
  def list_topics \
307
391
  project,
308
392
  page_size: nil,
@@ -333,6 +417,27 @@ module Google
333
417
  # operations such as per-page iteration or access to the response
334
418
  # object.
335
419
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
420
+ # @example
421
+ # require "google/cloud/pubsub/v1/publisher_api"
422
+ #
423
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
424
+ #
425
+ # publisher_api = PublisherApi.new
426
+ # formatted_topic = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
427
+ #
428
+ # # Iterate over all results.
429
+ # publisher_api.list_topic_subscriptions(formatted_topic).each do |element|
430
+ # # Process element.
431
+ # end
432
+ #
433
+ # # Or iterate over results one page at a time.
434
+ # publisher_api.list_topic_subscriptions(formatted_topic).each_page do |page|
435
+ # # Process each page at a time.
436
+ # page.each do |element|
437
+ # # Process element.
438
+ # end
439
+ # end
440
+
336
441
  def list_topic_subscriptions \
337
442
  topic,
338
443
  page_size: nil,
@@ -356,6 +461,15 @@ module Google
356
461
  # Overrides the default settings for this call, e.g, timeout,
357
462
  # retries, etc.
358
463
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
464
+ # @example
465
+ # require "google/cloud/pubsub/v1/publisher_api"
466
+ #
467
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
468
+ #
469
+ # publisher_api = PublisherApi.new
470
+ # formatted_topic = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
471
+ # publisher_api.delete_topic(formatted_topic)
472
+
359
473
  def delete_topic \
360
474
  topic,
361
475
  options: nil
@@ -364,6 +478,113 @@ module Google
364
478
  )
365
479
  @delete_topic.call(req, options)
366
480
  end
481
+
482
+ # Sets the access control policy on the specified resource. Replaces any
483
+ # existing policy.
484
+ #
485
+ # @param resource [String]
486
+ # REQUIRED: The resource for which the policy is being specified.
487
+ # +resource+ is usually specified as a path. For example, a Project
488
+ # resource is specified as +projects/{project}+.
489
+ # @param policy [Google::Iam::V1::Policy]
490
+ # REQUIRED: The complete policy to be applied to the +resource+. The size of
491
+ # the policy is limited to a few 10s of KB. An empty policy is a
492
+ # valid policy but certain Cloud Platform services (such as Projects)
493
+ # might reject them.
494
+ # @param options [Google::Gax::CallOptions]
495
+ # Overrides the default settings for this call, e.g, timeout,
496
+ # retries, etc.
497
+ # @return [Google::Iam::V1::Policy]
498
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
499
+ # @example
500
+ # require "google/cloud/pubsub/v1/publisher_api"
501
+ #
502
+ # Policy = Google::Iam::V1::Policy
503
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
504
+ #
505
+ # publisher_api = PublisherApi.new
506
+ # formatted_resource = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
507
+ # policy = Policy.new
508
+ # response = publisher_api.set_iam_policy(formatted_resource, policy)
509
+
510
+ def set_iam_policy \
511
+ resource,
512
+ policy,
513
+ options: nil
514
+ req = Google::Iam::V1::SetIamPolicyRequest.new(
515
+ resource: resource,
516
+ policy: policy
517
+ )
518
+ @set_iam_policy.call(req, options)
519
+ end
520
+
521
+ # Gets the access control policy for a resource.
522
+ # Returns an empty policy if the resource exists and does not have a policy
523
+ # set.
524
+ #
525
+ # @param resource [String]
526
+ # REQUIRED: The resource for which the policy is being requested.
527
+ # +resource+ is usually specified as a path. For example, a Project
528
+ # resource is specified as +projects/{project}+.
529
+ # @param options [Google::Gax::CallOptions]
530
+ # Overrides the default settings for this call, e.g, timeout,
531
+ # retries, etc.
532
+ # @return [Google::Iam::V1::Policy]
533
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
534
+ # @example
535
+ # require "google/cloud/pubsub/v1/publisher_api"
536
+ #
537
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
538
+ #
539
+ # publisher_api = PublisherApi.new
540
+ # formatted_resource = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
541
+ # response = publisher_api.get_iam_policy(formatted_resource)
542
+
543
+ def get_iam_policy \
544
+ resource,
545
+ options: nil
546
+ req = Google::Iam::V1::GetIamPolicyRequest.new(
547
+ resource: resource
548
+ )
549
+ @get_iam_policy.call(req, options)
550
+ end
551
+
552
+ # Returns permissions that a caller has on the specified resource.
553
+ #
554
+ # @param resource [String]
555
+ # REQUIRED: The resource for which the policy detail is being requested.
556
+ # +resource+ is usually specified as a path. For example, a Project
557
+ # resource is specified as +projects/{project}+.
558
+ # @param permissions [Array<String>]
559
+ # The set of permissions to check for the +resource+. Permissions with
560
+ # wildcards (such as '*' or 'storage.*') are not allowed. For more
561
+ # information see
562
+ # {IAM Overview}[https://cloud.google.com/iam/docs/overview#permissions].
563
+ # @param options [Google::Gax::CallOptions]
564
+ # Overrides the default settings for this call, e.g, timeout,
565
+ # retries, etc.
566
+ # @return [Google::Iam::V1::TestIamPermissionsResponse]
567
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
568
+ # @example
569
+ # require "google/cloud/pubsub/v1/publisher_api"
570
+ #
571
+ # PublisherApi = Google::Cloud::Pubsub::V1::PublisherApi
572
+ #
573
+ # publisher_api = PublisherApi.new
574
+ # formatted_resource = PublisherApi.topic_path("[PROJECT]", "[TOPIC]")
575
+ # permissions = []
576
+ # response = publisher_api.test_iam_permissions(formatted_resource, permissions)
577
+
578
+ def test_iam_permissions \
579
+ resource,
580
+ permissions,
581
+ options: nil
582
+ req = Google::Iam::V1::TestIamPermissionsRequest.new(
583
+ resource: resource,
584
+ permissions: permissions
585
+ )
586
+ @test_iam_permissions.call(req, options)
587
+ end
367
588
  end
368
589
  end
369
590
  end
@@ -71,6 +71,21 @@
71
71
  "timeout_millis": 60000,
72
72
  "retry_codes_name": "idempotent",
73
73
  "retry_params_name": "default"
74
+ },
75
+ "SetIamPolicy": {
76
+ "timeout_millis": 60000,
77
+ "retry_codes_name": "non_idempotent",
78
+ "retry_params_name": "default"
79
+ },
80
+ "GetIamPolicy": {
81
+ "timeout_millis": 60000,
82
+ "retry_codes_name": "idempotent",
83
+ "retry_params_name": "default"
84
+ },
85
+ "TestIamPermissions": {
86
+ "timeout_millis": 60000,
87
+ "retry_codes_name": "non_idempotent",
88
+ "retry_params_name": "default"
74
89
  }
75
90
  }
76
91
  }
@@ -26,7 +26,8 @@ require "json"
26
26
  require "pathname"
27
27
 
28
28
  require "google/gax"
29
- require "google/pubsub/v1/pubsub_services_pb"
29
+ require "google/iam/v1/iam_policy_pb"
30
+ require "google/pubsub/v1/pubsub_pb"
30
31
 
31
32
  module Google
32
33
  module Cloud
@@ -35,10 +36,12 @@ module Google
35
36
  # The service that an application uses to manipulate subscriptions and to
36
37
  # consume messages from a subscription via the +Pull+ method.
37
38
  #
38
- # @!attribute [r] stub
39
+ # @!attribute [r] iam_policy_stub
40
+ # @return [Google::Iam::V1::IAMPolicy::Stub]
41
+ # @!attribute [r] subscriber_stub
39
42
  # @return [Google::Pubsub::V1::Subscriber::Stub]
40
43
  class SubscriberApi
41
- attr_reader :stub
44
+ attr_reader :iam_policy_stub, :subscriber_stub
42
45
 
43
46
  # The default address of the service.
44
47
  SERVICE_ADDRESS = "pubsub.googleapis.com".freeze
@@ -179,8 +182,16 @@ module Google
179
182
  timeout: DEFAULT_TIMEOUT,
180
183
  app_name: "gax",
181
184
  app_version: Google::Gax::VERSION
185
+ # These require statements are intentionally placed here to initialize
186
+ # the gRPC module only when it's required.
187
+ # See https://github.com/googleapis/toolkit/issues/446
188
+ require "google/gax/grpc"
189
+ require "google/iam/v1/iam_policy_services_pb"
190
+ require "google/pubsub/v1/pubsub_services_pb"
191
+
182
192
  google_api_client = "#{app_name}/#{app_version} " \
183
- "#{CODE_GEN_NAME_VERSION} ruby/#{RUBY_VERSION}".freeze
193
+ "#{CODE_GEN_NAME_VERSION} gax/#{Google::Gax::VERSION} " \
194
+ "ruby/#{RUBY_VERSION}".freeze
184
195
  headers = { :"x-goog-api-client" => google_api_client }
185
196
  client_config_file = Pathname.new(__dir__).join(
186
197
  "subscriber_client_config.json"
@@ -197,7 +208,15 @@ module Google
197
208
  kwargs: headers
198
209
  )
199
210
  end
200
- @stub = Google::Gax::Grpc.create_stub(
211
+ @iam_policy_stub = Google::Gax::Grpc.create_stub(
212
+ service_path,
213
+ port,
214
+ chan_creds: chan_creds,
215
+ channel: channel,
216
+ scopes: scopes,
217
+ &Google::Iam::V1::IAMPolicy::Stub.method(:new)
218
+ )
219
+ @subscriber_stub = Google::Gax::Grpc.create_stub(
201
220
  service_path,
202
221
  port,
203
222
  chan_creds: chan_creds,
@@ -206,48 +225,61 @@ module Google
206
225
  &Google::Pubsub::V1::Subscriber::Stub.method(:new)
207
226
  )
208
227
 
228
+ @set_iam_policy = Google::Gax.create_api_call(
229
+ @iam_policy_stub.method(:set_iam_policy),
230
+ defaults["set_iam_policy"]
231
+ )
232
+ @get_iam_policy = Google::Gax.create_api_call(
233
+ @iam_policy_stub.method(:get_iam_policy),
234
+ defaults["get_iam_policy"]
235
+ )
236
+ @test_iam_permissions = Google::Gax.create_api_call(
237
+ @iam_policy_stub.method(:test_iam_permissions),
238
+ defaults["test_iam_permissions"]
239
+ )
209
240
  @create_subscription = Google::Gax.create_api_call(
210
- @stub.method(:create_subscription),
241
+ @subscriber_stub.method(:create_subscription),
211
242
  defaults["create_subscription"]
212
243
  )
213
244
  @get_subscription = Google::Gax.create_api_call(
214
- @stub.method(:get_subscription),
245
+ @subscriber_stub.method(:get_subscription),
215
246
  defaults["get_subscription"]
216
247
  )
217
248
  @list_subscriptions = Google::Gax.create_api_call(
218
- @stub.method(:list_subscriptions),
249
+ @subscriber_stub.method(:list_subscriptions),
219
250
  defaults["list_subscriptions"]
220
251
  )
221
252
  @delete_subscription = Google::Gax.create_api_call(
222
- @stub.method(:delete_subscription),
253
+ @subscriber_stub.method(:delete_subscription),
223
254
  defaults["delete_subscription"]
224
255
  )
225
256
  @modify_ack_deadline = Google::Gax.create_api_call(
226
- @stub.method(:modify_ack_deadline),
257
+ @subscriber_stub.method(:modify_ack_deadline),
227
258
  defaults["modify_ack_deadline"]
228
259
  )
229
260
  @acknowledge = Google::Gax.create_api_call(
230
- @stub.method(:acknowledge),
261
+ @subscriber_stub.method(:acknowledge),
231
262
  defaults["acknowledge"]
232
263
  )
233
264
  @pull = Google::Gax.create_api_call(
234
- @stub.method(:pull),
265
+ @subscriber_stub.method(:pull),
235
266
  defaults["pull"]
236
267
  )
237
268
  @modify_push_config = Google::Gax.create_api_call(
238
- @stub.method(:modify_push_config),
269
+ @subscriber_stub.method(:modify_push_config),
239
270
  defaults["modify_push_config"]
240
271
  )
241
272
  end
242
273
 
243
274
  # Service calls
244
275
 
245
- # Creates a subscription to a given topic for a given subscriber.
276
+ # Creates a subscription to a given topic.
246
277
  # If the subscription already exists, returns +ALREADY_EXISTS+.
247
278
  # If the corresponding topic doesn't exist, returns +NOT_FOUND+.
248
279
  #
249
280
  # If the name is not provided in the request, the server will assign a random
250
- # name for this subscription on the same project as the topic.
281
+ # name for this subscription on the same project as the topic. Note that
282
+ # for REST API requests, you must specify a name.
251
283
  #
252
284
  # @param name [String]
253
285
  # The name of the subscription. It must have the format
@@ -275,6 +307,7 @@ module Google
275
307
  # deadline. To override this value for a given message, call
276
308
  # +ModifyAckDeadline+ with the corresponding +ack_id+ if using
277
309
  # pull.
310
+ # The maximum custom deadline you can specify is 600 seconds (10 minutes).
278
311
  #
279
312
  # For push delivery, this value is also used to set the request timeout for
280
313
  # the call to the push endpoint.
@@ -282,12 +315,22 @@ module Google
282
315
  # If the subscriber never acknowledges the message, the Pub/Sub
283
316
  # system will eventually redeliver the message.
284
317
  #
285
- # If this parameter is not set, the default value of 10 seconds is used.
318
+ # If this parameter is 0, a default value of 10 seconds is used.
286
319
  # @param options [Google::Gax::CallOptions]
287
320
  # Overrides the default settings for this call, e.g, timeout,
288
321
  # retries, etc.
289
322
  # @return [Google::Pubsub::V1::Subscription]
290
323
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
324
+ # @example
325
+ # require "google/cloud/pubsub/v1/subscriber_api"
326
+ #
327
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
328
+ #
329
+ # subscriber_api = SubscriberApi.new
330
+ # formatted_name = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
331
+ # formatted_topic = SubscriberApi.topic_path("[PROJECT]", "[TOPIC]")
332
+ # response = subscriber_api.create_subscription(formatted_name, formatted_topic)
333
+
291
334
  def create_subscription \
292
335
  name,
293
336
  topic,
@@ -312,6 +355,15 @@ module Google
312
355
  # retries, etc.
313
356
  # @return [Google::Pubsub::V1::Subscription]
314
357
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
358
+ # @example
359
+ # require "google/cloud/pubsub/v1/subscriber_api"
360
+ #
361
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
362
+ #
363
+ # subscriber_api = SubscriberApi.new
364
+ # formatted_subscription = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
365
+ # response = subscriber_api.get_subscription(formatted_subscription)
366
+
315
367
  def get_subscription \
316
368
  subscription,
317
369
  options: nil
@@ -340,6 +392,27 @@ module Google
340
392
  # operations such as per-page iteration or access to the response
341
393
  # object.
342
394
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
395
+ # @example
396
+ # require "google/cloud/pubsub/v1/subscriber_api"
397
+ #
398
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
399
+ #
400
+ # subscriber_api = SubscriberApi.new
401
+ # formatted_project = SubscriberApi.project_path("[PROJECT]")
402
+ #
403
+ # # Iterate over all results.
404
+ # subscriber_api.list_subscriptions(formatted_project).each do |element|
405
+ # # Process element.
406
+ # end
407
+ #
408
+ # # Or iterate over results one page at a time.
409
+ # subscriber_api.list_subscriptions(formatted_project).each_page do |page|
410
+ # # Process each page at a time.
411
+ # page.each do |element|
412
+ # # Process element.
413
+ # end
414
+ # end
415
+
343
416
  def list_subscriptions \
344
417
  project,
345
418
  page_size: nil,
@@ -363,6 +436,15 @@ module Google
363
436
  # Overrides the default settings for this call, e.g, timeout,
364
437
  # retries, etc.
365
438
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
439
+ # @example
440
+ # require "google/cloud/pubsub/v1/subscriber_api"
441
+ #
442
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
443
+ #
444
+ # subscriber_api = SubscriberApi.new
445
+ # formatted_subscription = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
446
+ # subscriber_api.delete_subscription(formatted_subscription)
447
+
366
448
  def delete_subscription \
367
449
  subscription,
368
450
  options: nil
@@ -375,7 +457,8 @@ module Google
375
457
  # Modifies the ack deadline for a specific message. This method is useful
376
458
  # to indicate that more time is needed to process a message by the
377
459
  # subscriber, or to make the message available for redelivery if the
378
- # processing was interrupted.
460
+ # processing was interrupted. Note that this does not modify the
461
+ # subscription-level +ackDeadlineSeconds+ used for subsequent messages.
379
462
  #
380
463
  # @param subscription [String]
381
464
  # The name of the subscription.
@@ -391,6 +474,17 @@ module Google
391
474
  # Overrides the default settings for this call, e.g, timeout,
392
475
  # retries, etc.
393
476
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
477
+ # @example
478
+ # require "google/cloud/pubsub/v1/subscriber_api"
479
+ #
480
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
481
+ #
482
+ # subscriber_api = SubscriberApi.new
483
+ # formatted_subscription = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
484
+ # ack_ids = []
485
+ # ack_deadline_seconds = 0
486
+ # subscriber_api.modify_ack_deadline(formatted_subscription, ack_ids, ack_deadline_seconds)
487
+
394
488
  def modify_ack_deadline \
395
489
  subscription,
396
490
  ack_ids,
@@ -421,6 +515,16 @@ module Google
421
515
  # Overrides the default settings for this call, e.g, timeout,
422
516
  # retries, etc.
423
517
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
518
+ # @example
519
+ # require "google/cloud/pubsub/v1/subscriber_api"
520
+ #
521
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
522
+ #
523
+ # subscriber_api = SubscriberApi.new
524
+ # formatted_subscription = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
525
+ # ack_ids = []
526
+ # subscriber_api.acknowledge(formatted_subscription, ack_ids)
527
+
424
528
  def acknowledge \
425
529
  subscription,
426
530
  ack_ids,
@@ -453,6 +557,16 @@ module Google
453
557
  # retries, etc.
454
558
  # @return [Google::Pubsub::V1::PullResponse]
455
559
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
560
+ # @example
561
+ # require "google/cloud/pubsub/v1/subscriber_api"
562
+ #
563
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
564
+ #
565
+ # subscriber_api = SubscriberApi.new
566
+ # formatted_subscription = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
567
+ # max_messages = 0
568
+ # response = subscriber_api.pull(formatted_subscription, max_messages)
569
+
456
570
  def pull \
457
571
  subscription,
458
572
  max_messages,
@@ -486,6 +600,17 @@ module Google
486
600
  # Overrides the default settings for this call, e.g, timeout,
487
601
  # retries, etc.
488
602
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
603
+ # @example
604
+ # require "google/cloud/pubsub/v1/subscriber_api"
605
+ #
606
+ # PushConfig = Google::Pubsub::V1::PushConfig
607
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
608
+ #
609
+ # subscriber_api = SubscriberApi.new
610
+ # formatted_subscription = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
611
+ # push_config = PushConfig.new
612
+ # subscriber_api.modify_push_config(formatted_subscription, push_config)
613
+
489
614
  def modify_push_config \
490
615
  subscription,
491
616
  push_config,
@@ -496,6 +621,113 @@ module Google
496
621
  )
497
622
  @modify_push_config.call(req, options)
498
623
  end
624
+
625
+ # Sets the access control policy on the specified resource. Replaces any
626
+ # existing policy.
627
+ #
628
+ # @param resource [String]
629
+ # REQUIRED: The resource for which the policy is being specified.
630
+ # +resource+ is usually specified as a path. For example, a Project
631
+ # resource is specified as +projects/{project}+.
632
+ # @param policy [Google::Iam::V1::Policy]
633
+ # REQUIRED: The complete policy to be applied to the +resource+. The size of
634
+ # the policy is limited to a few 10s of KB. An empty policy is a
635
+ # valid policy but certain Cloud Platform services (such as Projects)
636
+ # might reject them.
637
+ # @param options [Google::Gax::CallOptions]
638
+ # Overrides the default settings for this call, e.g, timeout,
639
+ # retries, etc.
640
+ # @return [Google::Iam::V1::Policy]
641
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
642
+ # @example
643
+ # require "google/cloud/pubsub/v1/subscriber_api"
644
+ #
645
+ # Policy = Google::Iam::V1::Policy
646
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
647
+ #
648
+ # subscriber_api = SubscriberApi.new
649
+ # formatted_resource = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
650
+ # policy = Policy.new
651
+ # response = subscriber_api.set_iam_policy(formatted_resource, policy)
652
+
653
+ def set_iam_policy \
654
+ resource,
655
+ policy,
656
+ options: nil
657
+ req = Google::Iam::V1::SetIamPolicyRequest.new(
658
+ resource: resource,
659
+ policy: policy
660
+ )
661
+ @set_iam_policy.call(req, options)
662
+ end
663
+
664
+ # Gets the access control policy for a resource.
665
+ # Returns an empty policy if the resource exists and does not have a policy
666
+ # set.
667
+ #
668
+ # @param resource [String]
669
+ # REQUIRED: The resource for which the policy is being requested.
670
+ # +resource+ is usually specified as a path. For example, a Project
671
+ # resource is specified as +projects/{project}+.
672
+ # @param options [Google::Gax::CallOptions]
673
+ # Overrides the default settings for this call, e.g, timeout,
674
+ # retries, etc.
675
+ # @return [Google::Iam::V1::Policy]
676
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
677
+ # @example
678
+ # require "google/cloud/pubsub/v1/subscriber_api"
679
+ #
680
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
681
+ #
682
+ # subscriber_api = SubscriberApi.new
683
+ # formatted_resource = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
684
+ # response = subscriber_api.get_iam_policy(formatted_resource)
685
+
686
+ def get_iam_policy \
687
+ resource,
688
+ options: nil
689
+ req = Google::Iam::V1::GetIamPolicyRequest.new(
690
+ resource: resource
691
+ )
692
+ @get_iam_policy.call(req, options)
693
+ end
694
+
695
+ # Returns permissions that a caller has on the specified resource.
696
+ #
697
+ # @param resource [String]
698
+ # REQUIRED: The resource for which the policy detail is being requested.
699
+ # +resource+ is usually specified as a path. For example, a Project
700
+ # resource is specified as +projects/{project}+.
701
+ # @param permissions [Array<String>]
702
+ # The set of permissions to check for the +resource+. Permissions with
703
+ # wildcards (such as '*' or 'storage.*') are not allowed. For more
704
+ # information see
705
+ # {IAM Overview}[https://cloud.google.com/iam/docs/overview#permissions].
706
+ # @param options [Google::Gax::CallOptions]
707
+ # Overrides the default settings for this call, e.g, timeout,
708
+ # retries, etc.
709
+ # @return [Google::Iam::V1::TestIamPermissionsResponse]
710
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
711
+ # @example
712
+ # require "google/cloud/pubsub/v1/subscriber_api"
713
+ #
714
+ # SubscriberApi = Google::Cloud::Pubsub::V1::SubscriberApi
715
+ #
716
+ # subscriber_api = SubscriberApi.new
717
+ # formatted_resource = SubscriberApi.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
718
+ # permissions = []
719
+ # response = subscriber_api.test_iam_permissions(formatted_resource, permissions)
720
+
721
+ def test_iam_permissions \
722
+ resource,
723
+ permissions,
724
+ options: nil
725
+ req = Google::Iam::V1::TestIamPermissionsRequest.new(
726
+ resource: resource,
727
+ permissions: permissions
728
+ )
729
+ @test_iam_permissions.call(req, options)
730
+ end
499
731
  end
500
732
  end
501
733
  end