google-cloud-pubsub 2.2.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -130,12 +130,12 @@ module Google
130
130
  # puts subscription.name
131
131
  # end
132
132
  #
133
- def all request_limit: nil
133
+ def all request_limit: nil, &block
134
134
  request_limit = request_limit.to_i if request_limit
135
135
  return enum_for :all, request_limit: request_limit unless block_given?
136
136
  results = self
137
137
  loop do
138
- results.each { |r| yield r }
138
+ results.each(&block)
139
139
  if request_limit
140
140
  request_limit -= 1
141
141
  break if request_limit.negative?
@@ -85,10 +85,10 @@ module Google
85
85
  end
86
86
 
87
87
  ##
88
- # The name of the topic in the form of
89
- # "/projects/project-identifier/topics/topic-name".
88
+ # The name of the topic.
90
89
  #
91
- # @return [String]
90
+ # @return [String] A fully-qualified topic name in the form
91
+ # `projects/{project_id}/topics/{topic_id}`.
92
92
  #
93
93
  def name
94
94
  return @resource_name if reference?
@@ -233,6 +233,78 @@ module Google
233
233
  @resource_name = nil
234
234
  end
235
235
 
236
+ ##
237
+ # The name of the schema that messages published should be validated against, if schema settings are configured
238
+ # for the topic. The value is a fully-qualified schema name in the form
239
+ # `projects/{project_id}/schemas/{schema_id}`. If present, {#message_encoding} should also be present. The value
240
+ # of this field will be `_deleted-schema_` if the schema has been deleted.
241
+ #
242
+ # Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
243
+ #
244
+ # @return [String, nil] The schema name, or `nil` if schema settings are not configured for the topic.
245
+ #
246
+ # @example
247
+ # require "google/cloud/pubsub"
248
+ #
249
+ # pubsub = Google::Cloud::PubSub.new
250
+ #
251
+ # topic = pubsub.topic "my-topic"
252
+ #
253
+ # topic.schema_name #=> "projects/my-project/schemas/my-schema"
254
+ #
255
+ def schema_name
256
+ ensure_grpc!
257
+ @grpc.schema_settings&.schema
258
+ end
259
+
260
+ ##
261
+ # The encoding of messages validated against the schema identified by {#schema_name}. If present, {#schema_name}
262
+ # should also be present. Values include:
263
+ #
264
+ # * `JSON` - JSON encoding.
265
+ # * `BINARY` - Binary encoding, as defined by the schema type. For some schema types, binary encoding may not be
266
+ # available.
267
+ #
268
+ # Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
269
+ #
270
+ # @return [Symbol, nil] The schema encoding, or `nil` if schema settings are not configured for the topic.
271
+ #
272
+ # @example
273
+ # require "google/cloud/pubsub"
274
+ #
275
+ # pubsub = Google::Cloud::PubSub.new
276
+ #
277
+ # topic = pubsub.topic "my-topic"
278
+ #
279
+ # topic.message_encoding #=> :JSON
280
+ #
281
+ def message_encoding
282
+ ensure_grpc!
283
+ @grpc.schema_settings&.encoding
284
+ end
285
+
286
+ ##
287
+ # Checks if the encoding of messages in the schema settings is `BINARY`. See {#message_encoding}.
288
+ #
289
+ # Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
290
+ #
291
+ # @return [Boolean] `true` when `BINARY`, `false` if not `BINARY` or schema settings is not set.
292
+ #
293
+ def message_encoding_binary?
294
+ message_encoding.to_s.upcase == "BINARY"
295
+ end
296
+
297
+ ##
298
+ # Checks if the encoding of messages in the schema settings is `JSON`. See {#message_encoding}.
299
+ #
300
+ # Makes an API call to retrieve the schema settings when called on a reference object. See {#reference?}.
301
+ #
302
+ # @return [Boolean] `true` when `JSON`, `false` if not `JSON` or schema settings is not set.
303
+ #
304
+ def message_encoding_json?
305
+ message_encoding.to_s.upcase == "JSON"
306
+ end
307
+
236
308
  ##
237
309
  # Permanently deletes the topic.
238
310
  #
@@ -255,11 +327,17 @@ module Google
255
327
  ##
256
328
  # Creates a new {Subscription} object on the current Topic.
257
329
  #
258
- # @param [String] subscription_name Name of the new subscription. Must
259
- # start with a letter, and contain only letters ([A-Za-z]), numbers
260
- # ([0-9], dashes (-), underscores (_), periods (.), tildes (~), plus
261
- # (+) or percent signs (%). It must be between 3 and 255 characters in
262
- # length, and it must not start with "goog". Required.
330
+ # @param [String] subscription_name Name of the new subscription. Required.
331
+ # The value can be a simple subscription ID (relative name), in which
332
+ # case the current project ID will be supplied, or a fully-qualified
333
+ # subscription name in the form
334
+ # `projects/{project_id}/subscriptions/{subscription_id}`.
335
+ #
336
+ # The subscription ID (relative name) must start with a letter, and
337
+ # contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
338
+ # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
339
+ # signs (`%`). It must be between 3 and 255 characters in length, and
340
+ # it must not start with `goog`.
263
341
  # @param [Integer] deadline The maximum number of seconds after a
264
342
  # subscriber receives a message before the subscriber should
265
343
  # acknowledge the message.
@@ -309,9 +387,6 @@ module Google
309
387
  # will be retried as soon as possible for healthy subscribers. Retry Policy will be triggered on NACKs or
310
388
  # acknowledgement deadline exceeded events for a given message.
311
389
  #
312
- # **EXPERIMENTAL:** This API might be changed in backward-incompatible ways and is not recommended for
313
- # production use. It is not subject to any SLA or deprecation policy.
314
- #
315
390
  # @return [Google::Cloud::PubSub::Subscription]
316
391
  #
317
392
  # @example
@@ -418,7 +493,11 @@ module Google
418
493
  ##
419
494
  # Retrieves subscription by name.
420
495
  #
421
- # @param [String] subscription_name Name of a subscription.
496
+ # @param [String] subscription_name Name of a subscription. The value
497
+ # can be a simple subscription ID (relative name), in which case the
498
+ # current project ID will be supplied, or a fully-qualified
499
+ # subscription name in the form
500
+ # `projects/{project_id}/subscriptions/{subscription_id}`.
422
501
  # @param [Boolean] skip_lookup Optionally create a {Subscription} object
423
502
  # without verifying the subscription resource exists on the Pub/Sub
424
503
  # service. Calls made on this object will raise errors if the service
@@ -670,7 +749,7 @@ module Google
670
749
  def publish_async data = nil, attributes = nil, ordering_key: nil, **extra_attrs, &callback
671
750
  ensure_service!
672
751
 
673
- @async_publisher ||= AsyncPublisher.new name, service, @async_opts
752
+ @async_publisher ||= AsyncPublisher.new name, service, **@async_opts
674
753
  @async_publisher.publish data, attributes, ordering_key: ordering_key, **extra_attrs, &callback
675
754
  end
676
755
 
@@ -686,7 +765,7 @@ module Google
686
765
  # {Subscription#listen}, and {Message#ordering_key}.
687
766
  #
688
767
  def enable_message_ordering!
689
- @async_publisher ||= AsyncPublisher.new name, service, @async_opts
768
+ @async_publisher ||= AsyncPublisher.new name, service, **@async_opts
690
769
  @async_publisher.enable_message_ordering!
691
770
  end
692
771
 
@@ -702,7 +781,7 @@ module Google
702
781
  # @return [Boolean]
703
782
  #
704
783
  def message_ordering?
705
- @async_publisher ||= AsyncPublisher.new name, service, @async_opts
784
+ @async_publisher ||= AsyncPublisher.new name, service, **@async_opts
706
785
  @async_publisher.message_ordering?
707
786
  end
708
787
 
@@ -715,7 +794,7 @@ module Google
715
794
  # @return [boolean] `true` when resumed, `false` otherwise.
716
795
  #
717
796
  def resume_publish ordering_key
718
- @async_publisher ||= AsyncPublisher.new name, service, @async_opts
797
+ @async_publisher ||= AsyncPublisher.new name, service, **@async_opts
719
798
  @async_publisher.resume_publish ordering_key
720
799
  end
721
800
 
@@ -124,12 +124,12 @@ module Google
124
124
  # puts topic.name
125
125
  # end
126
126
  #
127
- def all request_limit: nil
127
+ def all request_limit: nil, &block
128
128
  request_limit = request_limit.to_i if request_limit
129
129
  return enum_for :all, request_limit: request_limit unless block_given?
130
130
  results = self
131
131
  loop do
132
- results.each { |r| yield r }
132
+ results.each(&block)
133
133
  if request_limit
134
134
  request_limit -= 1
135
135
  break if request_limit.negative?
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module PubSub
19
- VERSION = "2.2.0".freeze
19
+ VERSION = "2.5.0".freeze
20
20
  end
21
21
 
22
22
  Pubsub = PubSub unless const_defined? :Pubsub
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-pubsub
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-11-11 00:00:00.000000000 Z
12
+ date: 2021-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -67,20 +67,34 @@ dependencies:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.1'
70
+ - !ruby/object:Gem::Dependency
71
+ name: avro
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.10'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.10'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: google-style
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - "~>"
75
89
  - !ruby/object:Gem::Version
76
- version: 1.24.0
90
+ version: 1.25.1
77
91
  type: :development
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
95
  - - "~>"
82
96
  - !ruby/object:Gem::Version
83
- version: 1.24.0
97
+ version: 1.25.1
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: minitest
86
100
  requirement: !ruby/object:Gem::Requirement
@@ -225,6 +239,8 @@ files:
225
239
  - lib/google/cloud/pubsub/publish_result.rb
226
240
  - lib/google/cloud/pubsub/received_message.rb
227
241
  - lib/google/cloud/pubsub/retry_policy.rb
242
+ - lib/google/cloud/pubsub/schema.rb
243
+ - lib/google/cloud/pubsub/schema/list.rb
228
244
  - lib/google/cloud/pubsub/service.rb
229
245
  - lib/google/cloud/pubsub/snapshot.rb
230
246
  - lib/google/cloud/pubsub/snapshot/list.rb
@@ -252,14 +268,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
252
268
  requirements:
253
269
  - - ">="
254
270
  - !ruby/object:Gem::Version
255
- version: '2.4'
271
+ version: '2.5'
256
272
  required_rubygems_version: !ruby/object:Gem::Requirement
257
273
  requirements:
258
274
  - - ">="
259
275
  - !ruby/object:Gem::Version
260
276
  version: '0'
261
277
  requirements: []
262
- rubygems_version: 3.1.4
278
+ rubygems_version: 3.2.13
263
279
  signing_key:
264
280
  specification_version: 4
265
281
  summary: API Client library for Google Cloud Pub/Sub