google-cloud-pubsub 0.20.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +5 -5
  2. data/.yardopts +18 -0
  3. data/AUTHENTICATION.md +178 -0
  4. data/CHANGELOG.md +659 -0
  5. data/CODE_OF_CONDUCT.md +40 -0
  6. data/CONTRIBUTING.md +187 -0
  7. data/EMULATOR.md +37 -0
  8. data/LICENSE +201 -0
  9. data/LOGGING.md +32 -0
  10. data/OVERVIEW.md +528 -0
  11. data/TROUBLESHOOTING.md +31 -0
  12. data/lib/google/cloud/pubsub/async_publisher/batch.rb +310 -0
  13. data/lib/google/cloud/pubsub/async_publisher.rb +402 -0
  14. data/lib/google/cloud/pubsub/batch_publisher.rb +100 -0
  15. data/lib/google/cloud/pubsub/convert.rb +91 -0
  16. data/lib/google/cloud/pubsub/credentials.rb +26 -10
  17. data/lib/google/cloud/pubsub/errors.rb +85 -0
  18. data/lib/google/cloud/pubsub/message.rb +82 -20
  19. data/lib/google/cloud/pubsub/policy.rb +40 -61
  20. data/lib/google/cloud/pubsub/project.rb +405 -265
  21. data/lib/google/cloud/pubsub/publish_result.rb +103 -0
  22. data/lib/google/cloud/pubsub/received_message.rb +165 -30
  23. data/lib/google/cloud/pubsub/retry_policy.rb +88 -0
  24. data/lib/google/cloud/pubsub/schema/list.rb +180 -0
  25. data/lib/google/cloud/pubsub/schema.rb +310 -0
  26. data/lib/google/cloud/pubsub/service.rb +304 -162
  27. data/lib/google/cloud/pubsub/snapshot/list.rb +178 -0
  28. data/lib/google/cloud/pubsub/snapshot.rb +205 -0
  29. data/lib/google/cloud/pubsub/subscriber/enumerator_queue.rb +54 -0
  30. data/lib/google/cloud/pubsub/subscriber/inventory.rb +173 -0
  31. data/lib/google/cloud/pubsub/subscriber/sequencer.rb +115 -0
  32. data/lib/google/cloud/pubsub/subscriber/stream.rb +400 -0
  33. data/lib/google/cloud/pubsub/subscriber/timed_unary_buffer.rb +230 -0
  34. data/lib/google/cloud/pubsub/subscriber.rb +417 -0
  35. data/lib/google/cloud/pubsub/subscription/list.rb +38 -43
  36. data/lib/google/cloud/pubsub/subscription/push_config.rb +268 -0
  37. data/lib/google/cloud/pubsub/subscription.rb +1040 -210
  38. data/lib/google/cloud/pubsub/topic/list.rb +32 -37
  39. data/lib/google/cloud/pubsub/topic.rb +726 -177
  40. data/lib/google/cloud/pubsub/version.rb +6 -4
  41. data/lib/google/cloud/pubsub.rb +138 -413
  42. data/lib/google-cloud-pubsub.rb +60 -42
  43. metadata +88 -39
  44. data/lib/google/cloud/pubsub/topic/publisher.rb +0 -87
  45. data/lib/google/iam/v1/iam_policy.rb +0 -33
  46. data/lib/google/iam/v1/iam_policy_services.rb +0 -30
  47. data/lib/google/iam/v1/policy.rb +0 -25
  48. data/lib/google/pubsub/v1/pubsub_pb.rb +0 -129
  49. data/lib/google/pubsub/v1/pubsub_services_pb.rb +0 -117
@@ -1,10 +1,10 @@
1
- # Copyright 2016 Google Inc. All rights reserved.
1
+ # Copyright 2016 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
5
5
  # You may obtain a copy of the License at
6
6
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
8
  #
9
9
  # Unless required by applicable law or agreed to in writing, software
10
10
  # distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,8 +15,10 @@
15
15
 
16
16
  module Google
17
17
  module Cloud
18
- module Pubsub
19
- VERSION = "0.20.0"
18
+ module PubSub
19
+ VERSION = "2.6.1".freeze
20
20
  end
21
+
22
+ Pubsub = PubSub unless const_defined? :Pubsub
21
23
  end
22
24
  end
@@ -1,10 +1,10 @@
1
- # Copyright 2015 Google Inc. All rights reserved.
1
+ # Copyright 2015 Google LLC
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
5
5
  # You may obtain a copy of the License at
6
6
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
8
  #
9
9
  # Unless required by applicable law or agreed to in writing, software
10
10
  # distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,6 +15,8 @@
15
15
 
16
16
  require "google-cloud-pubsub"
17
17
  require "google/cloud/pubsub/project"
18
+ require "google/cloud/config"
19
+ require "google/cloud/env"
18
20
 
19
21
  module Google
20
22
  module Cloud
@@ -28,418 +30,141 @@ module Google
28
30
  # Cloud Pub/Sub allows developers to communicate between independently
29
31
  # written applications.
30
32
  #
31
- # The goal of google-cloud is to provide a API that is comfortable to
32
- # Rubyists. Authentication is handled by {Google::Cloud#pubsub}. You can
33
- # provide the project and credential information to connect to the Pub/Sub
34
- # service, or if you are running on Google Compute Engine this configuration
35
- # is taken care of for you.
33
+ # See {file:OVERVIEW.md Google Cloud Pub/Sub Overview}.
36
34
  #
37
- # ```ruby
38
- # require "google/cloud"
39
- #
40
- # gcloud = Google::Cloud.new
41
- # pubsub = gcloud.pubsub
42
- #
43
- # topic = pubsub.topic "my-topic"
44
- # topic.publish "task completed"
45
- # ```
46
- #
47
- # To learn more about Pub/Sub, read the [Google Cloud Pub/Sub Overview
48
- # ](https://cloud.google.com/pubsub/overview).
49
- #
50
- # ## Retrieving Topics
51
- #
52
- # A Topic is a named resource to which messages are sent by publishers.
53
- # A Topic is found by its name. (See {Google::Cloud::Pubsub::Project#topic})
54
- #
55
- # ```ruby
56
- # require "google/cloud"
57
- #
58
- # gcloud = Google::Cloud.new
59
- # pubsub = gcloud.pubsub
60
- # topic = pubsub.topic "my-topic"
61
- # ```
62
- #
63
- # ## Creating a Topic
64
- #
65
- # A Topic is created from a Project. (See
66
- # {Google::Cloud::Pubsub::Project#create_topic})
67
- #
68
- # ```ruby
69
- # require "google/cloud"
70
- #
71
- # gcloud = Google::Cloud.new
72
- # pubsub = gcloud.pubsub
73
- # topic = pubsub.create_topic "my-topic"
74
- # ```
75
- #
76
- # ## Retrieving Subscriptions
77
- #
78
- # A Subscription is a named resource representing the stream of messages
79
- # from a single, specific Topic, to be delivered to the subscribing
80
- # application. A Subscription is found by its name. (See
81
- # {Google::Cloud::Pubsub::Topic#subscription})
82
- #
83
- # ```ruby
84
- # require "google/cloud"
85
- #
86
- # gcloud = Google::Cloud.new
87
- # pubsub = gcloud.pubsub
88
- #
89
- # topic = pubsub.topic "my-topic"
90
- # subscription = topic.subscription "my-topic-subscription"
91
- # puts subscription.name
92
- # ```
93
- #
94
- # ## Creating a Subscription
95
- #
96
- # A Subscription is created from a Topic. (See
97
- # {Google::Cloud::Pubsub::Topic#subscribe} and
98
- # {Google::Cloud::Pubsub::Project#subscribe})
99
- #
100
- # ```ruby
101
- # require "google/cloud"
102
- #
103
- # gcloud = Google::Cloud.new
104
- # pubsub = gcloud.pubsub
105
- #
106
- # topic = pubsub.topic "my-topic"
107
- # sub = topic.subscribe "my-topic-sub"
108
- # puts sub.name # => "my-topic-sub"
109
- # ```
110
- #
111
- # The subscription can be created that specifies the number of seconds to
112
- # wait to be acknowledged as well as an endpoint URL to push the messages
113
- # to:
114
- #
115
- # ```ruby
116
- # require "google/cloud"
117
- #
118
- # gcloud = Google::Cloud.new
119
- # pubsub = gcloud.pubsub
120
- #
121
- # topic = pubsub.topic "my-topic"
122
- # sub = topic.subscribe "my-topic-sub",
123
- # deadline: 120,
124
- # endpoint: "https://example.com/push"
125
- # ```
126
- #
127
- # ## Publishing Messages
128
- #
129
- # Messages are published to a topic. Any message published to a topic
130
- # without a subscription will be lost. Ensure the topic has a subscription
131
- # before publishing. (See {Google::Cloud::Pubsub::Topic#publish} and
132
- # {Google::Cloud::Pubsub::Project#publish})
133
- #
134
- # ```ruby
135
- # require "google/cloud"
136
- #
137
- # gcloud = Google::Cloud.new
138
- # pubsub = gcloud.pubsub
139
- #
140
- # topic = pubsub.topic "my-topic"
141
- # msg = topic.publish "new-message"
142
- # ```
143
- #
144
- # Messages can also be published with attributes:
145
- #
146
- # ```ruby
147
- # require "google/cloud"
148
- #
149
- # gcloud = Google::Cloud.new
150
- # pubsub = gcloud.pubsub
151
- #
152
- # topic = pubsub.topic "my-topic"
153
- # msg = topic.publish "new-message",
154
- # foo: :bar,
155
- # this: :that
156
- # ```
157
- #
158
- # Multiple messages can be published at the same time by passing a block:
159
- #
160
- # ```ruby
161
- # require "google/cloud"
162
- #
163
- # gcloud = Google::Cloud.new
164
- # pubsub = gcloud.pubsub
165
- #
166
- # topic = pubsub.topic "my-topic"
167
- # msgs = topic.publish do |batch|
168
- # batch.publish "new-message-1", foo: :bar
169
- # batch.publish "new-message-2", foo: :baz
170
- # batch.publish "new-message-3", foo: :bif
171
- # end
172
- # ```
173
- #
174
- # ## Pulling Messages
175
- #
176
- # Messages are pulled from a Subscription. (See
177
- # {Google::Cloud::Pubsub::Subscription#pull})
178
- #
179
- # ```ruby
180
- # require "google/cloud"
181
- #
182
- # gcloud = Google::Cloud.new
183
- # pubsub = gcloud.pubsub
184
- #
185
- # sub = pubsub.subscription "my-topic-sub"
186
- # msgs = sub.pull
187
- # ```
188
- #
189
- # A maximum number of messages returned can also be specified:
190
- #
191
- # ```ruby
192
- # require "google/cloud"
193
- #
194
- # gcloud = Google::Cloud.new
195
- # pubsub = gcloud.pubsub
196
- #
197
- # sub = pubsub.subscription "my-topic-sub", max: 10
198
- # msgs = sub.pull
199
- # ```
200
- #
201
- # The request for messages can also block until messages are available.
202
- # (See {Google::Cloud::Pubsub::Subscription#wait_for_messages})
203
- #
204
- # ```ruby
205
- # require "google/cloud"
206
- #
207
- # gcloud = Google::Cloud.new
208
- # pubsub = gcloud.pubsub
209
- #
210
- # sub = pubsub.subscription "my-topic-sub"
211
- # msgs = sub.wait_for_messages
212
- # ```
213
- #
214
- # ## Acknowledging a Message
215
- #
216
- # Messages that are received can be acknowledged in Pub/Sub, marking the
217
- # message to be removed so it cannot be pulled again.
218
- #
219
- # A Message that can be acknowledged is called a ReceivedMessage.
220
- # ReceivedMessages can be acknowledged one at a time:
221
- # (See {Google::Cloud::Pubsub::ReceivedMessage#acknowledge!})
222
- #
223
- # ```ruby
224
- # require "google/cloud"
225
- #
226
- # gcloud = Google::Cloud.new
227
- # pubsub = gcloud.pubsub
228
- #
229
- # sub = pubsub.subscription "my-topic-sub"
230
- # sub.pull.each { |msg| msg.acknowledge! }
231
- # ```
232
- #
233
- # Or, multiple messages can be acknowledged in a single API call:
234
- # (See {Google::Cloud::Pubsub::Subscription#acknowledge})
235
- #
236
- # ```ruby
237
- # require "google/cloud"
238
- #
239
- # gcloud = Google::Cloud.new
240
- # pubsub = gcloud.pubsub
241
- #
242
- # sub = pubsub.subscription "my-topic-sub"
243
- # received_messages = sub.pull
244
- # sub.acknowledge received_messages
245
- # ```
246
- #
247
- # ## Modifying a Deadline
248
- #
249
- # A message must be acknowledged after it is pulled, or Pub/Sub will mark
250
- # the message for redelivery. The message acknowledgement deadline can
251
- # delayed if more time is needed. This will allow more time to process the
252
- # message before the message is marked for redelivery. (See
253
- # {Google::Cloud::Pubsub::ReceivedMessage#delay!})
254
- #
255
- # ```ruby
256
- # require "google/cloud"
257
- #
258
- # gcloud = Google::Cloud.new
259
- # pubsub = gcloud.pubsub
260
- #
261
- # sub = pubsub.subscription "my-topic-sub"
262
- # received_message = sub.pull.first
263
- # if received_message
264
- # puts received_message.message.data
265
- # # Delay for 2 minutes
266
- # received_message.delay! 120
267
- # end
268
- # ```
269
- #
270
- # The message can also be made available for immediate redelivery:
271
- #
272
- # ```ruby
273
- # require "google/cloud"
274
- #
275
- # gcloud = Google::Cloud.new
276
- # pubsub = gcloud.pubsub
277
- #
278
- # sub = pubsub.subscription "my-topic-sub"
279
- # received_message = sub.pull.first
280
- # if received_message
281
- # puts received_message.message.data
282
- # # Mark for redelivery by setting the deadline to now
283
- # received_message.delay! 0
284
- # end
285
- # ```
286
- #
287
- # Multiple messages can be delayed or made available for immediate
288
- # redelivery: (See {Google::Cloud::Pubsub::Subscription#delay})
289
- #
290
- # ```ruby
291
- # require "google/cloud"
292
- #
293
- # gcloud = Google::Cloud.new
294
- # pubsub = gcloud.pubsub
295
- #
296
- # sub = pubsub.subscription "my-topic-sub"
297
- # received_messages = sub.pull
298
- # sub.delay 120, received_messages
299
- # ```
300
- #
301
- # ## Listening for Messages
302
- #
303
- # Long running workers are easy to create with `listen`, which runs an
304
- # infinitely blocking loop to process messages as they are received. (See
305
- # {Google::Cloud::Pubsub::Subscription#listen})
306
- #
307
- # ```ruby
308
- # require "google/cloud"
309
- #
310
- # gcloud = Google::Cloud.new
311
- # pubsub = gcloud.pubsub
312
- #
313
- # sub = pubsub.subscription "my-topic-sub"
314
- # sub.listen do |msg|
315
- # # process msg
316
- # end
317
- # ```
318
- #
319
- # Messages are retrieved in batches for efficiency. The number of messages
320
- # pulled per batch can be limited with the `max` option:
321
- #
322
- # ```ruby
323
- # require "google/cloud"
324
- #
325
- # gcloud = Google::Cloud.new
326
- # pubsub = gcloud.pubsub
327
- #
328
- # sub = pubsub.subscription "my-topic-sub"
329
- # sub.listen max: 20 do |msg|
330
- # # process msg
331
- # end
332
- # ```
333
- #
334
- # When processing time and the acknowledgement deadline are a concern,
335
- # messages can be automatically acknowledged as they are pulled with the
336
- # `autoack` option:
337
- #
338
- # ```ruby
339
- # require "google/cloud"
340
- #
341
- # gcloud = Google::Cloud.new
342
- # pubsub = gcloud.pubsub
343
- #
344
- # sub = pubsub.subscription "my-topic-sub"
345
- # sub.listen autoack: true do |msg|
346
- # # process msg
347
- # end
348
- # ```
349
- #
350
- # ## Configuring retries and timeout
351
- #
352
- # You can configure how many times API requests may be automatically
353
- # retried. When an API request fails, the response will be inspected to see
354
- # if the request meets criteria indicating that it may succeed on retry,
355
- # such as `500` and `503` status codes or a specific internal error code
356
- # such as `rateLimitExceeded`. If it meets the criteria, the request will be
357
- # retried after a delay. If another error occurs, the delay will be
358
- # increased before a subsequent attempt, until the `retries` limit is
359
- # reached.
360
- #
361
- # You can also set the request `timeout` value in seconds.
362
- #
363
- # ```ruby
364
- # require "google/cloud"
365
- #
366
- # gcloud = Google::Cloud.new
367
- # pubsub = gcloud.pubsub retries: 10, timeout: 120
368
- # ```
369
- #
370
- # See the [Pub/Sub error codes](https://cloud.google.com/pubsub/error-codes)
371
- # for a list of error conditions.
372
- #
373
- # ## Working Across Projects
374
- #
375
- # All calls to the Pub/Sub service use the same project and credentials
376
- # provided to the {Google::Cloud#pubsub} method. However, it is common to
377
- # reference topics or subscriptions in other projects, which can be achieved
378
- # by using the `project` option. The main credentials must have permissions
379
- # to the topics and subscriptions in other projects.
380
- #
381
- # ```ruby
382
- # require "google/cloud"
383
- #
384
- # gcloud = Google::Cloud.new # my-project-id
385
- # pubsub = gcloud.pubsub
386
- #
387
- # # Get a topic in the current project
388
- # my_topic = pubsub.topic "my-topic"
389
- # my_topic.name #=> "projects/my-project-id/topics/my-topic"
390
- # # Get a topic in another project
391
- # other_topic = pubsub.topic "other-topic", project: "other-project-id"
392
- # other_topic.name #=> "projects/other-project-id/topics/other-topic"
393
- # ```
394
- #
395
- # It is possible to create a subscription in the current project that pulls
396
- # from a topic in another project:
397
- #
398
- # ```ruby
399
- # require "google/cloud"
400
- #
401
- # gcloud = Google::Cloud.new # my-project-id
402
- # pubsub = gcloud.pubsub
403
- #
404
- # # Get a topic in another project
405
- # topic = pubsub.topic "other-topic", project: "other-project-id"
406
- # # Create a subscription in the current project that pulls from
407
- # # the topic in another project
408
- # sub = topic.subscribe "my-sub"
409
- # sub.name #=> "projects/my-project-id/subscriptions/my-sub"
410
- # sub.topic.name #=> "projects/other-project-id/topics/other-topic"
411
- # ```
412
- #
413
- # ## Using the Google Cloud Pub/Sub Emulator
414
- #
415
- # To develop and test your application locally, you can use the [Google
416
- # Cloud Pub/Sub Emulator](https://cloud.google.com/pubsub/emulator), which
417
- # provides [local
418
- # emulation](https://cloud.google.com/sdk/gcloud/reference/beta/emulators/)
419
- # of the production Google Cloud Pub/Sub environment. You can start the
420
- # Google Cloud Pub/Sub emulator using the `gcloud` command-line tool.
421
- #
422
- # To configure your ruby code to use the emulator, set the
423
- # `PUBSUB_EMULATOR_HOST` environment variable to the host and port where the
424
- # emulator is running. The value can be set as an environment variable in
425
- # the shell running the ruby code, or can be set directly in the ruby code
426
- # as shown below.
427
- #
428
- # ```ruby
429
- # require "google/cloud"
430
- #
431
- # # Make Pub/Sub use the emulator
432
- # ENV["PUBSUB_EMULATOR_HOST"] = "localhost:8918"
433
- #
434
- # gcloud = Google::Cloud.new "emulator-project-id"
435
- # pubsub = gcloud.pubsub
436
- #
437
- # # Get a topic in the current project
438
- # my_topic = pubsub.new_topic "my-topic"
439
- # my_topic.name #=> "projects/emulator-project-id/topics/my-topic"
440
- # ```
441
- #
442
- module Pubsub
35
+ module PubSub
36
+ # rubocop:disable Metrics/AbcSize
37
+
38
+ ##
39
+ # Creates a new object for connecting to the Pub/Sub service.
40
+ # Each call creates a new connection.
41
+ #
42
+ # For more information on connecting to Google Cloud see the
43
+ # {file:AUTHENTICATION.md Authentication Guide}.
44
+ #
45
+ # @param [String] project_id Project identifier for the Pub/Sub service
46
+ # you are connecting to. If not present, the default project for the
47
+ # credentials is used.
48
+ # @param [String, Hash, Google::Auth::Credentials] credentials The path to
49
+ # the keyfile as a String, the contents of the keyfile as a Hash, or a
50
+ # Google::Auth::Credentials object. (See {PubSub::Credentials})
51
+ # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
52
+ # the set of resources and operations that the connection can access.
53
+ # See [Using OAuth 2.0 to Access Google
54
+ # APIs](https://developers.google.com/identity/protocols/OAuth2).
55
+ #
56
+ # The default scope is:
57
+ #
58
+ # * `https://www.googleapis.com/auth/pubsub`
59
+ # @param [Integer] timeout Default timeout to use in requests. Optional.
60
+ # @param [String] endpoint Override of the endpoint host name. Optional.
61
+ # If the param is nil, uses the default endpoint.
62
+ # @param [String] emulator_host Pub/Sub emulator host. Optional.
63
+ # If the param is nil, uses the value of the `emulator_host` config.
64
+ # @param [String] project Alias for the `project_id` argument. Deprecated.
65
+ # @param [String] keyfile Alias for the `credentials` argument.
66
+ # Deprecated.
67
+ #
68
+ # @return [Google::Cloud::PubSub::Project]
69
+ #
70
+ # @example
71
+ # require "google/cloud/pubsub"
72
+ #
73
+ # pubsub = Google::Cloud::PubSub.new
74
+ #
75
+ # topic = pubsub.topic "my-topic"
76
+ # topic.publish "task completed"
77
+ #
78
+ def self.new project_id: nil,
79
+ credentials: nil,
80
+ scope: nil,
81
+ timeout: nil,
82
+ endpoint: nil,
83
+ emulator_host: nil,
84
+ project: nil,
85
+ keyfile: nil
86
+ project_id ||= (project || default_project_id)
87
+ scope ||= configure.scope
88
+ timeout ||= configure.timeout
89
+ endpoint ||= configure.endpoint
90
+ emulator_host ||= configure.emulator_host
91
+
92
+ if emulator_host
93
+ project_id = project_id.to_s # Always cast to a string
94
+ raise ArgumentError, "project_id is missing" if project_id.empty?
95
+
96
+ service = PubSub::Service.new project_id, :this_channel_is_insecure, host: emulator_host, timeout: timeout
97
+ return PubSub::Project.new service
98
+ end
99
+
100
+ credentials ||= (keyfile || default_credentials(scope: scope))
101
+ unless credentials.is_a? Google::Auth::Credentials
102
+ credentials = PubSub::Credentials.new credentials, scope: scope
103
+ end
104
+
105
+ project_id ||= credentials.project_id if credentials.respond_to? :project_id
106
+ project_id = project_id.to_s # Always cast to a string
107
+ raise ArgumentError, "project_id is missing" if project_id.empty?
108
+
109
+ service = PubSub::Service.new project_id, credentials, host: endpoint, timeout: timeout
110
+ PubSub::Project.new service
111
+ end
112
+
113
+ # rubocop:enable Metrics/AbcSize
114
+
115
+ ##
116
+ # Configure the Google Cloud PubSub library.
117
+ #
118
+ # The following PubSub configuration parameters are supported:
119
+ #
120
+ # * `project_id` - (String) Identifier for a PubSub project. (The
121
+ # parameter `project` is considered deprecated, but may also be used.)
122
+ # * `credentials` - (String, Hash, Google::Auth::Credentials) The path to
123
+ # the keyfile as a String, the contents of the keyfile as a Hash, or a
124
+ # Google::Auth::Credentials object. (See {PubSub::Credentials}) (The
125
+ # parameter `keyfile` is considered deprecated, but may also be used.)
126
+ # * `scope` - (String, Array<String>) The OAuth 2.0 scopes controlling
127
+ # the set of resources and operations that the connection can access.
128
+ # * `retries` - (Integer) Number of times to retry requests on server
129
+ # error.
130
+ # * `timeout` - (Integer) Default timeout to use in requests.
131
+ # * `endpoint` - (String) Override of the endpoint host name, or `nil`
132
+ # to use the default endpoint.
133
+ # * `emulator_host` - (String) Host name of the emulator. Defaults to
134
+ # `ENV["PUBSUB_EMULATOR_HOST"]`
135
+ # * `on_error` - (Proc) A Proc to be run when an error is encountered
136
+ # on a background thread. The Proc must take the error object as the
137
+ # single argument. (See {Subscriber.on_error}.)
138
+ #
139
+ # @return [Google::Cloud::Config] The configuration object the
140
+ # Google::Cloud::PubSub library uses.
141
+ #
142
+ def self.configure
143
+ yield Google::Cloud.configure.pubsub if block_given?
144
+
145
+ Google::Cloud.configure.pubsub
146
+ end
147
+
148
+ ##
149
+ # @private Default project.
150
+ def self.default_project_id
151
+ Google::Cloud.configure.pubsub.project_id ||
152
+ Google::Cloud.configure.project_id ||
153
+ Google::Cloud.env.project_id
154
+ end
155
+
156
+ ##
157
+ # @private Default credentials.
158
+ def self.default_credentials scope: nil
159
+ Google::Cloud.configure.pubsub.credentials ||
160
+ Google::Cloud.configure.credentials ||
161
+ PubSub::Credentials.default(scope: scope)
162
+ end
443
163
  end
164
+
165
+ ## Legacy veneer namespace
166
+ Pubsub = PubSub unless const_defined? :Pubsub
444
167
  end
168
+ ## Legacy generated client namespace
169
+ Pubsub = Cloud::PubSub unless const_defined? :Pubsub
445
170
  end