google-cloud-pubsub 1.8.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHENTICATION.md +2 -1
  3. data/CHANGELOG.md +53 -0
  4. data/OVERVIEW.md +26 -58
  5. data/lib/google-cloud-pubsub.rb +14 -13
  6. data/lib/google/cloud/pubsub.rb +15 -18
  7. data/lib/google/cloud/pubsub/async_publisher.rb +2 -3
  8. data/lib/google/cloud/pubsub/credentials.rb +2 -2
  9. data/lib/google/cloud/pubsub/message.rb +1 -1
  10. data/lib/google/cloud/pubsub/project.rb +1 -1
  11. data/lib/google/cloud/pubsub/received_message.rb +4 -4
  12. data/lib/google/cloud/pubsub/service.rb +110 -257
  13. data/lib/google/cloud/pubsub/subscriber.rb +3 -3
  14. data/lib/google/cloud/pubsub/subscriber/stream.rb +3 -2
  15. data/lib/google/cloud/pubsub/subscription.rb +76 -12
  16. data/lib/google/cloud/pubsub/subscription/push_config.rb +55 -31
  17. data/lib/google/cloud/pubsub/topic.rb +50 -15
  18. data/lib/google/cloud/pubsub/version.rb +1 -1
  19. metadata +8 -79
  20. data/lib/google/cloud/pubsub/v1.rb +0 -17
  21. data/lib/google/cloud/pubsub/v1/credentials.rb +0 -41
  22. data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/iam_policy.rb +0 -21
  23. data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/options.rb +0 -21
  24. data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/policy.rb +0 -21
  25. data/lib/google/cloud/pubsub/v1/doc/google/protobuf/duration.rb +0 -91
  26. data/lib/google/cloud/pubsub/v1/doc/google/protobuf/empty.rb +0 -29
  27. data/lib/google/cloud/pubsub/v1/doc/google/protobuf/field_mask.rb +0 -222
  28. data/lib/google/cloud/pubsub/v1/doc/google/protobuf/timestamp.rb +0 -113
  29. data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +0 -833
  30. data/lib/google/cloud/pubsub/v1/doc/google/type/expr.rb +0 -19
  31. data/lib/google/cloud/pubsub/v1/publisher_client.rb +0 -928
  32. data/lib/google/cloud/pubsub/v1/publisher_client_config.json +0 -120
  33. data/lib/google/cloud/pubsub/v1/subscriber_client.rb +0 -1466
  34. data/lib/google/cloud/pubsub/v1/subscriber_client_config.json +0 -153
  35. data/lib/google/pubsub/v1/pubsub_pb.rb +0 -269
  36. data/lib/google/pubsub/v1/pubsub_services_pb.rb +0 -215
@@ -1,19 +0,0 @@
1
- # Copyright 2020 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- module Google
17
- module Type
18
- end
19
- end
@@ -1,928 +0,0 @@
1
- # Copyright 2020 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- #
15
- # EDITING INSTRUCTIONS
16
- # This file was generated from the file
17
- # https://github.com/googleapis/googleapis/blob/master/google/pubsub/v1/pubsub.proto,
18
- # and updates to that file get reflected here through a refresh process.
19
- # For the short term, the refresh process will only be runnable by Google
20
- # engineers.
21
-
22
-
23
- require "json"
24
- require "pathname"
25
-
26
- require "google/gax"
27
-
28
- require "google/iam/v1/iam_policy_pb"
29
- require "google/pubsub/v1/pubsub_pb"
30
- require "google/cloud/pubsub/v1/credentials"
31
- require "google/cloud/pubsub/version"
32
-
33
- module Google
34
- module Cloud
35
- module PubSub
36
- module V1
37
- # The service that an application uses to manipulate topics, and to send
38
- # messages to a topic.
39
- #
40
- # @!attribute [r] iam_policy_stub
41
- # @return [Google::Iam::V1::IAMPolicy::Stub]
42
- # @!attribute [r] publisher_stub
43
- # @return [Google::Cloud::PubSub::V1::Publisher::Stub]
44
- class PublisherClient
45
- # @private
46
- attr_reader :iam_policy_stub, :publisher_stub
47
-
48
- # The default address of the service.
49
- SERVICE_ADDRESS = "pubsub.googleapis.com".freeze
50
-
51
- # The default port of the service.
52
- DEFAULT_SERVICE_PORT = 443
53
-
54
- # The default set of gRPC interceptors.
55
- GRPC_INTERCEPTORS = []
56
-
57
- DEFAULT_TIMEOUT = 30
58
-
59
- PAGE_DESCRIPTORS = {
60
- "list_topics" => Google::Gax::PageDescriptor.new(
61
- "page_token",
62
- "next_page_token",
63
- "topics"),
64
- "list_topic_subscriptions" => Google::Gax::PageDescriptor.new(
65
- "page_token",
66
- "next_page_token",
67
- "subscriptions"),
68
- "list_topic_snapshots" => Google::Gax::PageDescriptor.new(
69
- "page_token",
70
- "next_page_token",
71
- "snapshots")
72
- }.freeze
73
-
74
- private_constant :PAGE_DESCRIPTORS
75
-
76
- BUNDLE_DESCRIPTORS = {
77
- "publish" => Google::Gax::BundleDescriptor.new(
78
- "messages",
79
- [
80
- "topic"
81
- ],
82
- subresponse_field: "message_ids")
83
- }.freeze
84
-
85
- private_constant :BUNDLE_DESCRIPTORS
86
-
87
- # The scopes needed to make gRPC calls to all of the methods defined in
88
- # this service.
89
- ALL_SCOPES = [
90
- "https://www.googleapis.com/auth/cloud-platform",
91
- "https://www.googleapis.com/auth/pubsub"
92
- ].freeze
93
-
94
-
95
- PROJECT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
96
- "projects/{project}"
97
- )
98
-
99
- private_constant :PROJECT_PATH_TEMPLATE
100
-
101
- SUBSCRIPTION_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
102
- "projects/{project}/subscriptions/{subscription}"
103
- )
104
-
105
- private_constant :SUBSCRIPTION_PATH_TEMPLATE
106
-
107
- TOPIC_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
108
- "projects/{project}/topics/{topic}"
109
- )
110
-
111
- private_constant :TOPIC_PATH_TEMPLATE
112
-
113
- # Returns a fully-qualified project resource name string.
114
- # @param project [String]
115
- # @return [String]
116
- def self.project_path project
117
- PROJECT_PATH_TEMPLATE.render(
118
- :"project" => project
119
- )
120
- end
121
-
122
- # Returns a fully-qualified subscription resource name string.
123
- # @param project [String]
124
- # @param subscription [String]
125
- # @return [String]
126
- def self.subscription_path project, subscription
127
- SUBSCRIPTION_PATH_TEMPLATE.render(
128
- :"project" => project,
129
- :"subscription" => subscription
130
- )
131
- end
132
-
133
- # Returns a fully-qualified topic resource name string.
134
- # @param project [String]
135
- # @param topic [String]
136
- # @return [String]
137
- def self.topic_path project, topic
138
- TOPIC_PATH_TEMPLATE.render(
139
- :"project" => project,
140
- :"topic" => topic
141
- )
142
- end
143
-
144
- # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
145
- # Provides the means for authenticating requests made by the client. This parameter can
146
- # be many types.
147
- # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
148
- # authenticating requests made by this client.
149
- # A `String` will be treated as the path to the keyfile to be used for the construction of
150
- # credentials for this client.
151
- # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
152
- # credentials for this client.
153
- # A `GRPC::Core::Channel` will be used to make calls through.
154
- # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
155
- # should already be composed with a `GRPC::Core::CallCredentials` object.
156
- # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
157
- # metadata for requests, generally, to give OAuth credentials.
158
- # @param scopes [Array<String>]
159
- # The OAuth scopes for this service. This parameter is ignored if
160
- # an updater_proc is supplied.
161
- # @param client_config [Hash]
162
- # A Hash for call options for each method. See
163
- # Google::Gax#construct_settings for the structure of
164
- # this data. Falls back to the default config if not specified
165
- # or the specified config is missing data points.
166
- # @param timeout [Numeric]
167
- # The default timeout, in seconds, for calls made through this client.
168
- # @param metadata [Hash]
169
- # Default metadata to be sent with each request. This can be overridden on a per call basis.
170
- # @param service_address [String]
171
- # Override for the service hostname, or `nil` to leave as the default.
172
- # @param service_port [Integer]
173
- # Override for the service port, or `nil` to leave as the default.
174
- # @param exception_transformer [Proc]
175
- # An optional proc that intercepts any exceptions raised during an API call to inject
176
- # custom error handling.
177
- def initialize \
178
- credentials: nil,
179
- scopes: ALL_SCOPES,
180
- client_config: {},
181
- timeout: DEFAULT_TIMEOUT,
182
- metadata: nil,
183
- service_address: nil,
184
- service_port: nil,
185
- exception_transformer: nil,
186
- lib_name: nil,
187
- lib_version: ""
188
- # These require statements are intentionally placed here to initialize
189
- # the gRPC module only when it's required.
190
- # See https://github.com/googleapis/toolkit/issues/446
191
- require "google/gax/grpc"
192
- require "google/iam/v1/iam_policy_services_pb"
193
- require "google/pubsub/v1/pubsub_services_pb"
194
-
195
- credentials ||= Google::Cloud::PubSub::V1::Credentials.default
196
-
197
- if credentials.is_a?(String) || credentials.is_a?(Hash)
198
- updater_proc = Google::Cloud::PubSub::V1::Credentials.new(credentials).updater_proc
199
- end
200
- if credentials.is_a?(GRPC::Core::Channel)
201
- channel = credentials
202
- end
203
- if credentials.is_a?(GRPC::Core::ChannelCredentials)
204
- chan_creds = credentials
205
- end
206
- if credentials.is_a?(Proc)
207
- updater_proc = credentials
208
- end
209
- if credentials.is_a?(Google::Auth::Credentials)
210
- updater_proc = credentials.updater_proc
211
- end
212
-
213
- package_version = Google::Cloud::PubSub::VERSION
214
-
215
- google_api_client = "gl-ruby/#{RUBY_VERSION}"
216
- google_api_client << " #{lib_name}/#{lib_version}" if lib_name
217
- google_api_client << " gapic/#{package_version} gax/#{Google::Gax::VERSION}"
218
- google_api_client << " grpc/#{GRPC::VERSION}"
219
- google_api_client.freeze
220
-
221
- headers = { :"x-goog-api-client" => google_api_client }
222
- if credentials.respond_to?(:quota_project_id) && credentials.quota_project_id
223
- headers[:"x-goog-user-project"] = credentials.quota_project_id
224
- end
225
- headers.merge!(metadata) unless metadata.nil?
226
- client_config_file = Pathname.new(__dir__).join(
227
- "publisher_client_config.json"
228
- )
229
- defaults = client_config_file.open do |f|
230
- Google::Gax.construct_settings(
231
- "google.pubsub.v1.Publisher",
232
- JSON.parse(f.read),
233
- client_config,
234
- Google::Gax::Grpc::STATUS_CODE_NAMES,
235
- timeout,
236
- bundle_descriptors: BUNDLE_DESCRIPTORS,
237
- page_descriptors: PAGE_DESCRIPTORS,
238
- errors: Google::Gax::Grpc::API_ERRORS,
239
- metadata: headers
240
- )
241
- end
242
-
243
- # Allow overriding the service path/port in subclasses.
244
- service_path = service_address || self.class::SERVICE_ADDRESS
245
- port = service_port || self.class::DEFAULT_SERVICE_PORT
246
- interceptors = self.class::GRPC_INTERCEPTORS
247
- @iam_policy_stub = Google::Gax::Grpc.create_stub(
248
- service_path,
249
- port,
250
- chan_creds: chan_creds,
251
- channel: channel,
252
- updater_proc: updater_proc,
253
- scopes: scopes,
254
- interceptors: interceptors,
255
- &Google::Iam::V1::IAMPolicy::Stub.method(:new)
256
- )
257
- @publisher_stub = Google::Gax::Grpc.create_stub(
258
- service_path,
259
- port,
260
- chan_creds: chan_creds,
261
- channel: channel,
262
- updater_proc: updater_proc,
263
- scopes: scopes,
264
- interceptors: interceptors,
265
- &Google::Cloud::PubSub::V1::Publisher::Stub.method(:new)
266
- )
267
-
268
- @create_topic = Google::Gax.create_api_call(
269
- @publisher_stub.method(:create_topic),
270
- defaults["create_topic"],
271
- exception_transformer: exception_transformer,
272
- params_extractor: proc do |request|
273
- {'name' => request.name}
274
- end
275
- )
276
- @update_topic = Google::Gax.create_api_call(
277
- @publisher_stub.method(:update_topic),
278
- defaults["update_topic"],
279
- exception_transformer: exception_transformer,
280
- params_extractor: proc do |request|
281
- {'topic.name' => request.topic.name}
282
- end
283
- )
284
- @publish = Google::Gax.create_api_call(
285
- @publisher_stub.method(:publish),
286
- defaults["publish"],
287
- exception_transformer: exception_transformer,
288
- params_extractor: proc do |request|
289
- {'topic' => request.topic}
290
- end
291
- )
292
- @get_topic = Google::Gax.create_api_call(
293
- @publisher_stub.method(:get_topic),
294
- defaults["get_topic"],
295
- exception_transformer: exception_transformer,
296
- params_extractor: proc do |request|
297
- {'topic' => request.topic}
298
- end
299
- )
300
- @list_topics = Google::Gax.create_api_call(
301
- @publisher_stub.method(:list_topics),
302
- defaults["list_topics"],
303
- exception_transformer: exception_transformer,
304
- params_extractor: proc do |request|
305
- {'project' => request.project}
306
- end
307
- )
308
- @list_topic_subscriptions = Google::Gax.create_api_call(
309
- @publisher_stub.method(:list_topic_subscriptions),
310
- defaults["list_topic_subscriptions"],
311
- exception_transformer: exception_transformer,
312
- params_extractor: proc do |request|
313
- {'topic' => request.topic}
314
- end
315
- )
316
- @list_topic_snapshots = Google::Gax.create_api_call(
317
- @publisher_stub.method(:list_topic_snapshots),
318
- defaults["list_topic_snapshots"],
319
- exception_transformer: exception_transformer,
320
- params_extractor: proc do |request|
321
- {'topic' => request.topic}
322
- end
323
- )
324
- @delete_topic = Google::Gax.create_api_call(
325
- @publisher_stub.method(:delete_topic),
326
- defaults["delete_topic"],
327
- exception_transformer: exception_transformer,
328
- params_extractor: proc do |request|
329
- {'topic' => request.topic}
330
- end
331
- )
332
- @set_iam_policy = Google::Gax.create_api_call(
333
- @iam_policy_stub.method(:set_iam_policy),
334
- defaults["set_iam_policy"],
335
- exception_transformer: exception_transformer,
336
- params_extractor: proc do |request|
337
- {'resource' => request.resource}
338
- end
339
- )
340
- @get_iam_policy = Google::Gax.create_api_call(
341
- @iam_policy_stub.method(:get_iam_policy),
342
- defaults["get_iam_policy"],
343
- exception_transformer: exception_transformer,
344
- params_extractor: proc do |request|
345
- {'resource' => request.resource}
346
- end
347
- )
348
- @test_iam_permissions = Google::Gax.create_api_call(
349
- @iam_policy_stub.method(:test_iam_permissions),
350
- defaults["test_iam_permissions"],
351
- exception_transformer: exception_transformer,
352
- params_extractor: proc do |request|
353
- {'resource' => request.resource}
354
- end
355
- )
356
- @detach_subscription = Google::Gax.create_api_call(
357
- @publisher_stub.method(:detach_subscription),
358
- defaults["detach_subscription"],
359
- exception_transformer: exception_transformer,
360
- params_extractor: proc do |request|
361
- {'subscription' => request.subscription}
362
- end
363
- )
364
- end
365
-
366
- # Service calls
367
-
368
- # Creates the given topic with the given name. See the
369
- # <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">
370
- # resource name rules</a>.
371
- #
372
- # @param name [String]
373
- # Required. The name of the topic. It must have the format
374
- # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
375
- # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
376
- # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
377
- # signs (`%`). It must be between 3 and 255 characters in length, and it
378
- # must not start with `"goog"`.
379
- # @param labels [Hash{String => String}]
380
- # See <a href="https://cloud.google.com/pubsub/docs/labels"> Creating and
381
- # managing labels</a>.
382
- # @param message_storage_policy [Google::Cloud::PubSub::V1::MessageStoragePolicy | Hash]
383
- # Policy constraining the set of Google Cloud Platform regions where messages
384
- # published to the topic may be stored. If not present, then no constraints
385
- # are in effect.
386
- # A hash of the same form as `Google::Cloud::PubSub::V1::MessageStoragePolicy`
387
- # can also be provided.
388
- # @param kms_key_name [String]
389
- # The resource name of the Cloud KMS CryptoKey to be used to protect access
390
- # to messages published on this topic.
391
- #
392
- # The expected format is `projects/*/locations/*/keyRings/*/cryptoKeys/*`.
393
- # @param options [Google::Gax::CallOptions]
394
- # Overrides the default settings for this call, e.g, timeout,
395
- # retries, etc.
396
- # @yield [result, operation] Access the result along with the RPC operation
397
- # @yieldparam result [Google::Cloud::PubSub::V1::Topic]
398
- # @yieldparam operation [GRPC::ActiveCall::Operation]
399
- # @return [Google::Cloud::PubSub::V1::Topic]
400
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
401
- # @example
402
- # require "google/cloud/pubsub"
403
- #
404
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
405
- # formatted_name = Google::Cloud::PubSub::V1::PublisherClient.topic_path("[PROJECT]", "[TOPIC]")
406
- # response = publisher_client.create_topic(formatted_name)
407
-
408
- def create_topic \
409
- name,
410
- labels: nil,
411
- message_storage_policy: nil,
412
- kms_key_name: nil,
413
- options: nil,
414
- &block
415
- req = {
416
- name: name,
417
- labels: labels,
418
- message_storage_policy: message_storage_policy,
419
- kms_key_name: kms_key_name
420
- }.delete_if { |_, v| v.nil? }
421
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::Topic)
422
- @create_topic.call(req, options, &block)
423
- end
424
-
425
- # Updates an existing topic. Note that certain properties of a
426
- # topic are not modifiable.
427
- #
428
- # @param topic [Google::Cloud::PubSub::V1::Topic | Hash]
429
- # Required. The updated topic object.
430
- # A hash of the same form as `Google::Cloud::PubSub::V1::Topic`
431
- # can also be provided.
432
- # @param update_mask [Google::Protobuf::FieldMask | Hash]
433
- # Required. Indicates which fields in the provided topic to update. Must be
434
- # specified and non-empty. Note that if `update_mask` contains
435
- # "message_storage_policy" but the `message_storage_policy` is not set in
436
- # the `topic` provided above, then the updated value is determined by the
437
- # policy configured at the project or organization level.
438
- # A hash of the same form as `Google::Protobuf::FieldMask`
439
- # can also be provided.
440
- # @param options [Google::Gax::CallOptions]
441
- # Overrides the default settings for this call, e.g, timeout,
442
- # retries, etc.
443
- # @yield [result, operation] Access the result along with the RPC operation
444
- # @yieldparam result [Google::Cloud::PubSub::V1::Topic]
445
- # @yieldparam operation [GRPC::ActiveCall::Operation]
446
- # @return [Google::Cloud::PubSub::V1::Topic]
447
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
448
- # @example
449
- # require "google/cloud/pubsub"
450
- #
451
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
452
- #
453
- # # TODO: Initialize `topic`:
454
- # topic = {}
455
- #
456
- # # TODO: Initialize `update_mask`:
457
- # update_mask = {}
458
- # response = publisher_client.update_topic(topic, update_mask)
459
-
460
- def update_topic \
461
- topic,
462
- update_mask,
463
- options: nil,
464
- &block
465
- req = {
466
- topic: topic,
467
- update_mask: update_mask
468
- }.delete_if { |_, v| v.nil? }
469
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::UpdateTopicRequest)
470
- @update_topic.call(req, options, &block)
471
- end
472
-
473
- # Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic
474
- # does not exist.
475
- #
476
- # @param topic [String]
477
- # Required. The messages in the request will be published on this topic.
478
- # Format is `projects/{project}/topics/{topic}`.
479
- # @param messages [Array<Google::Cloud::PubSub::V1::PubsubMessage | Hash>]
480
- # Required. The messages to publish.
481
- # A hash of the same form as `Google::Cloud::PubSub::V1::PubsubMessage`
482
- # can also be provided.
483
- # @param options [Google::Gax::CallOptions]
484
- # Overrides the default settings for this call, e.g, timeout,
485
- # retries, etc.
486
- # @yield [result, operation] Access the result along with the RPC operation
487
- # @yieldparam result [Google::Cloud::PubSub::V1::PublishResponse]
488
- # @yieldparam operation [GRPC::ActiveCall::Operation]
489
- # @return [Google::Cloud::PubSub::V1::PublishResponse]
490
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
491
- # @example
492
- # require "google/cloud/pubsub"
493
- #
494
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
495
- # formatted_topic = Google::Cloud::PubSub::V1::PublisherClient.topic_path("[PROJECT]", "[TOPIC]")
496
- # data = ''
497
- # messages_element = { data: data }
498
- # messages = [messages_element]
499
- # response = publisher_client.publish(formatted_topic, messages)
500
-
501
- def publish \
502
- topic,
503
- messages,
504
- options: nil,
505
- &block
506
- req = {
507
- topic: topic,
508
- messages: messages
509
- }.delete_if { |_, v| v.nil? }
510
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::PublishRequest)
511
- @publish.call(req, options, &block)
512
- end
513
-
514
- # Gets the configuration of a topic.
515
- #
516
- # @param topic [String]
517
- # Required. The name of the topic to get.
518
- # Format is `projects/{project}/topics/{topic}`.
519
- # @param options [Google::Gax::CallOptions]
520
- # Overrides the default settings for this call, e.g, timeout,
521
- # retries, etc.
522
- # @yield [result, operation] Access the result along with the RPC operation
523
- # @yieldparam result [Google::Cloud::PubSub::V1::Topic]
524
- # @yieldparam operation [GRPC::ActiveCall::Operation]
525
- # @return [Google::Cloud::PubSub::V1::Topic]
526
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
527
- # @example
528
- # require "google/cloud/pubsub"
529
- #
530
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
531
- # formatted_topic = Google::Cloud::PubSub::V1::PublisherClient.topic_path("[PROJECT]", "[TOPIC]")
532
- # response = publisher_client.get_topic(formatted_topic)
533
-
534
- def get_topic \
535
- topic,
536
- options: nil,
537
- &block
538
- req = {
539
- topic: topic
540
- }.delete_if { |_, v| v.nil? }
541
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::GetTopicRequest)
542
- @get_topic.call(req, options, &block)
543
- end
544
-
545
- # Lists matching topics.
546
- #
547
- # @param project [String]
548
- # Required. The name of the project in which to list topics.
549
- # Format is `projects/{project-id}`.
550
- # @param page_size [Integer]
551
- # The maximum number of resources contained in the underlying API
552
- # response. If page streaming is performed per-resource, this
553
- # parameter does not affect the return value. If page streaming is
554
- # performed per-page, this determines the maximum number of
555
- # resources in a page.
556
- # @param options [Google::Gax::CallOptions]
557
- # Overrides the default settings for this call, e.g, timeout,
558
- # retries, etc.
559
- # @yield [result, operation] Access the result along with the RPC operation
560
- # @yieldparam result [Google::Gax::PagedEnumerable<Google::Cloud::PubSub::V1::Topic>]
561
- # @yieldparam operation [GRPC::ActiveCall::Operation]
562
- # @return [Google::Gax::PagedEnumerable<Google::Cloud::PubSub::V1::Topic>]
563
- # An enumerable of Google::Cloud::PubSub::V1::Topic instances.
564
- # See Google::Gax::PagedEnumerable documentation for other
565
- # operations such as per-page iteration or access to the response
566
- # object.
567
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
568
- # @example
569
- # require "google/cloud/pubsub"
570
- #
571
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
572
- # formatted_project = Google::Cloud::PubSub::V1::PublisherClient.project_path("[PROJECT]")
573
- #
574
- # # Iterate over all results.
575
- # publisher_client.list_topics(formatted_project).each do |element|
576
- # # Process element.
577
- # end
578
- #
579
- # # Or iterate over results one page at a time.
580
- # publisher_client.list_topics(formatted_project).each_page do |page|
581
- # # Process each page at a time.
582
- # page.each do |element|
583
- # # Process element.
584
- # end
585
- # end
586
-
587
- def list_topics \
588
- project,
589
- page_size: nil,
590
- options: nil,
591
- &block
592
- req = {
593
- project: project,
594
- page_size: page_size
595
- }.delete_if { |_, v| v.nil? }
596
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::ListTopicsRequest)
597
- @list_topics.call(req, options, &block)
598
- end
599
-
600
- # Lists the names of the attached subscriptions on this topic.
601
- #
602
- # @param topic [String]
603
- # Required. The name of the topic that subscriptions are attached to.
604
- # Format is `projects/{project}/topics/{topic}`.
605
- # @param page_size [Integer]
606
- # The maximum number of resources contained in the underlying API
607
- # response. If page streaming is performed per-resource, this
608
- # parameter does not affect the return value. If page streaming is
609
- # performed per-page, this determines the maximum number of
610
- # resources in a page.
611
- # @param options [Google::Gax::CallOptions]
612
- # Overrides the default settings for this call, e.g, timeout,
613
- # retries, etc.
614
- # @yield [result, operation] Access the result along with the RPC operation
615
- # @yieldparam result [Google::Gax::PagedEnumerable<String>]
616
- # @yieldparam operation [GRPC::ActiveCall::Operation]
617
- # @return [Google::Gax::PagedEnumerable<String>]
618
- # An enumerable of String instances.
619
- # See Google::Gax::PagedEnumerable documentation for other
620
- # operations such as per-page iteration or access to the response
621
- # object.
622
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
623
- # @example
624
- # require "google/cloud/pubsub"
625
- #
626
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
627
- # formatted_topic = Google::Cloud::PubSub::V1::PublisherClient.topic_path("[PROJECT]", "[TOPIC]")
628
- #
629
- # # Iterate over all results.
630
- # publisher_client.list_topic_subscriptions(formatted_topic).each do |element|
631
- # # Process element.
632
- # end
633
- #
634
- # # Or iterate over results one page at a time.
635
- # publisher_client.list_topic_subscriptions(formatted_topic).each_page do |page|
636
- # # Process each page at a time.
637
- # page.each do |element|
638
- # # Process element.
639
- # end
640
- # end
641
-
642
- def list_topic_subscriptions \
643
- topic,
644
- page_size: nil,
645
- options: nil,
646
- &block
647
- req = {
648
- topic: topic,
649
- page_size: page_size
650
- }.delete_if { |_, v| v.nil? }
651
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::ListTopicSubscriptionsRequest)
652
- @list_topic_subscriptions.call(req, options, &block)
653
- end
654
-
655
- # Lists the names of the snapshots on this topic. Snapshots are used in
656
- # <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>
657
- # operations, which allow
658
- # you to manage message acknowledgments in bulk. That is, you can set the
659
- # acknowledgment state of messages in an existing subscription to the state
660
- # captured by a snapshot.
661
- #
662
- # @param topic [String]
663
- # Required. The name of the topic that snapshots are attached to.
664
- # Format is `projects/{project}/topics/{topic}`.
665
- # @param page_size [Integer]
666
- # The maximum number of resources contained in the underlying API
667
- # response. If page streaming is performed per-resource, this
668
- # parameter does not affect the return value. If page streaming is
669
- # performed per-page, this determines the maximum number of
670
- # resources in a page.
671
- # @param options [Google::Gax::CallOptions]
672
- # Overrides the default settings for this call, e.g, timeout,
673
- # retries, etc.
674
- # @yield [result, operation] Access the result along with the RPC operation
675
- # @yieldparam result [Google::Gax::PagedEnumerable<String>]
676
- # @yieldparam operation [GRPC::ActiveCall::Operation]
677
- # @return [Google::Gax::PagedEnumerable<String>]
678
- # An enumerable of String instances.
679
- # See Google::Gax::PagedEnumerable documentation for other
680
- # operations such as per-page iteration or access to the response
681
- # object.
682
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
683
- # @example
684
- # require "google/cloud/pubsub"
685
- #
686
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
687
- # formatted_topic = Google::Cloud::PubSub::V1::PublisherClient.topic_path("[PROJECT]", "[TOPIC]")
688
- #
689
- # # Iterate over all results.
690
- # publisher_client.list_topic_snapshots(formatted_topic).each do |element|
691
- # # Process element.
692
- # end
693
- #
694
- # # Or iterate over results one page at a time.
695
- # publisher_client.list_topic_snapshots(formatted_topic).each_page do |page|
696
- # # Process each page at a time.
697
- # page.each do |element|
698
- # # Process element.
699
- # end
700
- # end
701
-
702
- def list_topic_snapshots \
703
- topic,
704
- page_size: nil,
705
- options: nil,
706
- &block
707
- req = {
708
- topic: topic,
709
- page_size: page_size
710
- }.delete_if { |_, v| v.nil? }
711
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::ListTopicSnapshotsRequest)
712
- @list_topic_snapshots.call(req, options, &block)
713
- end
714
-
715
- # Deletes the topic with the given name. Returns `NOT_FOUND` if the topic
716
- # does not exist. After a topic is deleted, a new topic may be created with
717
- # the same name; this is an entirely new topic with none of the old
718
- # configuration or subscriptions. Existing subscriptions to this topic are
719
- # not deleted, but their `topic` field is set to `_deleted-topic_`.
720
- #
721
- # @param topic [String]
722
- # Required. Name of the topic to delete.
723
- # Format is `projects/{project}/topics/{topic}`.
724
- # @param options [Google::Gax::CallOptions]
725
- # Overrides the default settings for this call, e.g, timeout,
726
- # retries, etc.
727
- # @yield [result, operation] Access the result along with the RPC operation
728
- # @yieldparam result []
729
- # @yieldparam operation [GRPC::ActiveCall::Operation]
730
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
731
- # @example
732
- # require "google/cloud/pubsub"
733
- #
734
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
735
- # formatted_topic = Google::Cloud::PubSub::V1::PublisherClient.topic_path("[PROJECT]", "[TOPIC]")
736
- # publisher_client.delete_topic(formatted_topic)
737
-
738
- def delete_topic \
739
- topic,
740
- options: nil,
741
- &block
742
- req = {
743
- topic: topic
744
- }.delete_if { |_, v| v.nil? }
745
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::DeleteTopicRequest)
746
- @delete_topic.call(req, options, &block)
747
- nil
748
- end
749
-
750
- # Sets the access control policy on the specified resource. Replaces
751
- # any existing policy.
752
- #
753
- # Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED`
754
- # errors.
755
- #
756
- # @param resource [String]
757
- # REQUIRED: The resource for which the policy is being specified.
758
- # See the operation documentation for the appropriate value for this field.
759
- # @param policy [Google::Iam::V1::Policy | Hash]
760
- # REQUIRED: The complete policy to be applied to the `resource`. The size of
761
- # the policy is limited to a few 10s of KB. An empty policy is a
762
- # valid policy but certain Cloud Platform services (such as Projects)
763
- # might reject them.
764
- # A hash of the same form as `Google::Iam::V1::Policy`
765
- # can also be provided.
766
- # @param options [Google::Gax::CallOptions]
767
- # Overrides the default settings for this call, e.g, timeout,
768
- # retries, etc.
769
- # @yield [result, operation] Access the result along with the RPC operation
770
- # @yieldparam result [Google::Iam::V1::Policy]
771
- # @yieldparam operation [GRPC::ActiveCall::Operation]
772
- # @return [Google::Iam::V1::Policy]
773
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
774
- # @example
775
- # require "google/cloud/pubsub"
776
- #
777
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
778
- #
779
- # # TODO: Initialize `resource`:
780
- # resource = ''
781
- #
782
- # # TODO: Initialize `policy`:
783
- # policy = {}
784
- # response = publisher_client.set_iam_policy(resource, policy)
785
-
786
- def set_iam_policy \
787
- resource,
788
- policy,
789
- options: nil,
790
- &block
791
- req = {
792
- resource: resource,
793
- policy: policy
794
- }.delete_if { |_, v| v.nil? }
795
- req = Google::Gax::to_proto(req, Google::Iam::V1::SetIamPolicyRequest)
796
- @set_iam_policy.call(req, options, &block)
797
- end
798
-
799
- # Gets the access control policy for a resource. Returns an empty policy
800
- # if the resource exists and does not have a policy set.
801
- #
802
- # @param resource [String]
803
- # REQUIRED: The resource for which the policy is being requested.
804
- # See the operation documentation for the appropriate value for this field.
805
- # @param options_ [Google::Iam::V1::GetPolicyOptions | Hash]
806
- # OPTIONAL: A `GetPolicyOptions` object for specifying options to
807
- # `GetIamPolicy`. This field is only used by Cloud IAM.
808
- # A hash of the same form as `Google::Iam::V1::GetPolicyOptions`
809
- # can also be provided.
810
- # @param options [Google::Gax::CallOptions]
811
- # Overrides the default settings for this call, e.g, timeout,
812
- # retries, etc.
813
- # @yield [result, operation] Access the result along with the RPC operation
814
- # @yieldparam result [Google::Iam::V1::Policy]
815
- # @yieldparam operation [GRPC::ActiveCall::Operation]
816
- # @return [Google::Iam::V1::Policy]
817
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
818
- # @example
819
- # require "google/cloud/pubsub"
820
- #
821
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
822
- #
823
- # # TODO: Initialize `resource`:
824
- # resource = ''
825
- # response = publisher_client.get_iam_policy(resource)
826
-
827
- def get_iam_policy \
828
- resource,
829
- options_: nil,
830
- options: nil,
831
- &block
832
- req = {
833
- resource: resource,
834
- options: options_
835
- }.delete_if { |_, v| v.nil? }
836
- req = Google::Gax::to_proto(req, Google::Iam::V1::GetIamPolicyRequest)
837
- @get_iam_policy.call(req, options, &block)
838
- end
839
-
840
- # Returns permissions that a caller has on the specified resource. If the
841
- # resource does not exist, this will return an empty set of
842
- # permissions, not a `NOT_FOUND` error.
843
- #
844
- # Note: This operation is designed to be used for building
845
- # permission-aware UIs and command-line tools, not for authorization
846
- # checking. This operation may "fail open" without warning.
847
- #
848
- # @param resource [String]
849
- # REQUIRED: The resource for which the policy detail is being requested.
850
- # See the operation documentation for the appropriate value for this field.
851
- # @param permissions [Array<String>]
852
- # The set of permissions to check for the `resource`. Permissions with
853
- # wildcards (such as '*' or 'storage.*') are not allowed. For more
854
- # information see
855
- # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
856
- # @param options [Google::Gax::CallOptions]
857
- # Overrides the default settings for this call, e.g, timeout,
858
- # retries, etc.
859
- # @yield [result, operation] Access the result along with the RPC operation
860
- # @yieldparam result [Google::Iam::V1::TestIamPermissionsResponse]
861
- # @yieldparam operation [GRPC::ActiveCall::Operation]
862
- # @return [Google::Iam::V1::TestIamPermissionsResponse]
863
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
864
- # @example
865
- # require "google/cloud/pubsub"
866
- #
867
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
868
- #
869
- # # TODO: Initialize `resource`:
870
- # resource = ''
871
- #
872
- # # TODO: Initialize `permissions`:
873
- # permissions = []
874
- # response = publisher_client.test_iam_permissions(resource, permissions)
875
-
876
- def test_iam_permissions \
877
- resource,
878
- permissions,
879
- options: nil,
880
- &block
881
- req = {
882
- resource: resource,
883
- permissions: permissions
884
- }.delete_if { |_, v| v.nil? }
885
- req = Google::Gax::to_proto(req, Google::Iam::V1::TestIamPermissionsRequest)
886
- @test_iam_permissions.call(req, options, &block)
887
- end
888
-
889
- # Detaches a subscription from this topic. All messages retained in the
890
- # subscription are dropped. Subsequent `Pull` and `StreamingPull` requests
891
- # will return FAILED_PRECONDITION. If the subscription is a push
892
- # subscription, pushes to the endpoint will stop.
893
- #
894
- # @param subscription [String]
895
- # Required. The subscription to detach.
896
- # Format is `projects/{project}/subscriptions/{subscription}`.
897
- # @param options [Google::Gax::CallOptions]
898
- # Overrides the default settings for this call, e.g, timeout,
899
- # retries, etc.
900
- # @yield [result, operation] Access the result along with the RPC operation
901
- # @yieldparam result [Google::Cloud::PubSub::V1::DetachSubscriptionResponse]
902
- # @yieldparam operation [GRPC::ActiveCall::Operation]
903
- # @return [Google::Cloud::PubSub::V1::DetachSubscriptionResponse]
904
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
905
- # @example
906
- # require "google/cloud/pubsub"
907
- #
908
- # publisher_client = Google::Cloud::PubSub::Publisher.new(version: :v1)
909
- # formatted_subscription = Google::Cloud::PubSub::V1::PublisherClient.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
910
- # response = publisher_client.detach_subscription(formatted_subscription)
911
-
912
- def detach_subscription \
913
- subscription,
914
- options: nil,
915
- &block
916
- req = {
917
- subscription: subscription
918
- }.delete_if { |_, v| v.nil? }
919
- req = Google::Gax::to_proto(req, Google::Cloud::PubSub::V1::DetachSubscriptionRequest)
920
- @detach_subscription.call(req, options, &block)
921
- end
922
- end
923
- end
924
- end
925
-
926
- Pubsub = PubSub unless const_defined? :Pubsub
927
- end
928
- end