google-cloud-pubsub 1.9.0 → 2.2.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.
- checksums.yaml +4 -4
- data/AUTHENTICATION.md +2 -1
- data/CHANGELOG.md +53 -0
- data/OVERVIEW.md +26 -58
- data/lib/google-cloud-pubsub.rb +14 -13
- data/lib/google/cloud/pubsub.rb +15 -18
- data/lib/google/cloud/pubsub/async_publisher.rb +2 -3
- data/lib/google/cloud/pubsub/credentials.rb +2 -2
- data/lib/google/cloud/pubsub/message.rb +1 -1
- data/lib/google/cloud/pubsub/project.rb +1 -1
- data/lib/google/cloud/pubsub/received_message.rb +4 -4
- data/lib/google/cloud/pubsub/service.rb +110 -257
- data/lib/google/cloud/pubsub/subscriber.rb +3 -3
- data/lib/google/cloud/pubsub/subscriber/stream.rb +1 -2
- data/lib/google/cloud/pubsub/subscription.rb +124 -22
- data/lib/google/cloud/pubsub/subscription/push_config.rb +55 -31
- data/lib/google/cloud/pubsub/topic.rb +50 -15
- data/lib/google/cloud/pubsub/version.rb +1 -1
- metadata +8 -79
- data/lib/google/cloud/pubsub/v1.rb +0 -17
- data/lib/google/cloud/pubsub/v1/credentials.rb +0 -41
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/iam_policy.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/options.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/policy.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/duration.rb +0 -91
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/field_mask.rb +0 -222
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +0 -833
- data/lib/google/cloud/pubsub/v1/doc/google/type/expr.rb +0 -19
- data/lib/google/cloud/pubsub/v1/publisher_client.rb +0 -928
- data/lib/google/cloud/pubsub/v1/publisher_client_config.json +0 -120
- data/lib/google/cloud/pubsub/v1/subscriber_client.rb +0 -1466
- data/lib/google/cloud/pubsub/v1/subscriber_client_config.json +0 -153
- data/lib/google/pubsub/v1/pubsub_pb.rb +0 -269
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +0 -215
| @@ -41,7 +41,7 @@ module Google | |
| 41 41 | 
             
                  #   subscriber.start
         | 
| 42 42 | 
             
                  #
         | 
| 43 43 | 
             
                  #   # Shut down the subscriber when ready to stop receiving messages.
         | 
| 44 | 
            -
                  #   subscriber.stop | 
| 44 | 
            +
                  #   subscriber.stop!
         | 
| 45 45 | 
             
                  #
         | 
| 46 46 | 
             
                  # @attr_reader [String] subscription_name The name of the subscription the
         | 
| 47 47 | 
             
                  #   messages are pulled from.
         | 
| @@ -240,7 +240,7 @@ module Google | |
| 240 240 | 
             
                    #   subscriber.start
         | 
| 241 241 | 
             
                    #
         | 
| 242 242 | 
             
                    #   # Shut down the subscriber when ready to stop receiving messages.
         | 
| 243 | 
            -
                    #   subscriber.stop | 
| 243 | 
            +
                    #   subscriber.stop!
         | 
| 244 244 | 
             
                    #
         | 
| 245 245 | 
             
                    def on_error &block
         | 
| 246 246 | 
             
                      synchronize do
         | 
| @@ -276,7 +276,7 @@ module Google | |
| 276 276 | 
             
                    #   subscriber.last_error #=> nil
         | 
| 277 277 | 
             
                    #
         | 
| 278 278 | 
             
                    #   # Shut down the subscriber when ready to stop receiving messages.
         | 
| 279 | 
            -
                    #   subscriber.stop | 
| 279 | 
            +
                    #   subscriber.stop!
         | 
| 280 280 | 
             
                    #
         | 
| 281 281 | 
             
                    def last_error
         | 
| 282 282 | 
             
                      synchronize { @last_error }
         | 
| @@ -271,9 +271,8 @@ module Google | |
| 271 271 | 
             
                        stop
         | 
| 272 272 | 
             
                      rescue GRPC::Cancelled, GRPC::DeadlineExceeded, GRPC::Internal,
         | 
| 273 273 | 
             
                             GRPC::ResourceExhausted, GRPC::Unauthenticated,
         | 
| 274 | 
            -
                             GRPC::Unavailable | 
| 274 | 
            +
                             GRPC::Unavailable
         | 
| 275 275 | 
             
                        # Restart the stream with an incremental back for a retriable error.
         | 
| 276 | 
            -
                        # Also when GRPC raises the internal CallError.
         | 
| 277 276 |  | 
| 278 277 | 
             
                        retry
         | 
| 279 278 | 
             
                      rescue RestartStream
         | 
| @@ -43,12 +43,19 @@ module Google | |
| 43 43 | 
             
                  #     received_message.acknowledge!
         | 
| 44 44 | 
             
                  #   end
         | 
| 45 45 | 
             
                  #
         | 
| 46 | 
            -
                  #   #  | 
| 47 | 
            -
                  #   subscriber. | 
| 46 | 
            +
                  #   # Handle exceptions from listener
         | 
| 47 | 
            +
                  #   subscriber.on_error do |exception|
         | 
| 48 | 
            +
                  #      puts "Exception: #{exception.class} #{exception.message}"
         | 
| 49 | 
            +
                  #   end
         | 
| 48 50 | 
             
                  #
         | 
| 49 | 
            -
                  #   #  | 
| 50 | 
            -
                  #    | 
| 51 | 
            +
                  #   # Gracefully shut down the subscriber
         | 
| 52 | 
            +
                  #   at_exit do
         | 
| 53 | 
            +
                  #     subscriber.stop!
         | 
| 54 | 
            +
                  #   end
         | 
| 51 55 | 
             
                  #
         | 
| 56 | 
            +
                  #   # Start background threads that will call the block passed to listen.
         | 
| 57 | 
            +
                  #   subscriber.start
         | 
| 58 | 
            +
                  #   sleep
         | 
| 52 59 | 
             
                  class Subscription
         | 
| 53 60 | 
             
                    ##
         | 
| 54 61 | 
             
                    # @private The Service object.
         | 
| @@ -323,7 +330,7 @@ module Google | |
| 323 330 | 
             
                    # If {#expires_in=} is not set, a *default* value of of 31 days will be
         | 
| 324 331 | 
             
                    # used. The minimum allowed value is 1 day.
         | 
| 325 332 | 
             
                    #
         | 
| 326 | 
            -
                    # Makes an API call to retrieve the  | 
| 333 | 
            +
                    # Makes an API call to retrieve the value when called on a
         | 
| 327 334 | 
             
                    # reference object. See {#reference?}.
         | 
| 328 335 | 
             
                    #
         | 
| 329 336 | 
             
                    # @return [Numeric, nil] The expiration duration, or `nil` if unset.
         | 
| @@ -346,7 +353,7 @@ module Google | |
| 346 353 | 
             
                    #   to unset.
         | 
| 347 354 | 
             
                    #
         | 
| 348 355 | 
             
                    def expires_in= ttl
         | 
| 349 | 
            -
                      new_expiration_policy = Google:: | 
| 356 | 
            +
                      new_expiration_policy = Google::Cloud::PubSub::V1::ExpirationPolicy.new ttl: Convert.number_to_duration(ttl)
         | 
| 350 357 |  | 
| 351 358 | 
             
                      update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, expiration_policy: new_expiration_policy
         | 
| 352 359 | 
             
                      @grpc = service.update_subscription update_grpc, :expiration_policy
         | 
| @@ -370,8 +377,8 @@ module Google | |
| 370 377 | 
             
                    # otherwise `nil`. Dead lettering is done on a best effort basis. The same message might be dead lettered
         | 
| 371 378 | 
             
                    # multiple times.
         | 
| 372 379 | 
             
                    #
         | 
| 373 | 
            -
                    # See also {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts=}  | 
| 374 | 
            -
                    # {# | 
| 380 | 
            +
                    # See also {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts=}, {#dead_letter_max_delivery_attempts}
         | 
| 381 | 
            +
                    # and {#remove_dead_letter_policy}.
         | 
| 375 382 | 
             
                    #
         | 
| 376 383 | 
             
                    # Makes an API call to retrieve the topic name when called on a reference object. See {#reference?}.
         | 
| 377 384 | 
             
                    #
         | 
| @@ -402,7 +409,8 @@ module Google | |
| 402 409 | 
             
                    # The operation will fail if the topic does not exist. Users should ensure that there is a subscription attached
         | 
| 403 410 | 
             
                    # to this topic since messages published to a topic with no subscriptions are lost.
         | 
| 404 411 | 
             
                    #
         | 
| 405 | 
            -
                    # See also {#dead_letter_topic}, {#dead_letter_max_delivery_attempts=}  | 
| 412 | 
            +
                    # See also {#dead_letter_topic}, {#dead_letter_max_delivery_attempts=}, {#dead_letter_max_delivery_attempts}
         | 
| 413 | 
            +
                    # and {#remove_dead_letter_policy}.
         | 
| 406 414 | 
             
                    #
         | 
| 407 415 | 
             
                    # @param [Topic] new_dead_letter_topic The topic to which dead letter messages for the subscription should be
         | 
| 408 416 | 
             
                    #   published.
         | 
| @@ -434,14 +442,15 @@ module Google | |
| 434 442 | 
             
                    # acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0
         | 
| 435 443 | 
             
                    # deadline. Note that client libraries may automatically extend ack_deadlines.
         | 
| 436 444 | 
             
                    #
         | 
| 437 | 
            -
                    # This field will be honored on a best effort basis. If this parameter is 0 | 
| 445 | 
            +
                    # This field will be honored on a best effort basis. If this parameter is `nil` or `0`, a default value of `5`
         | 
| 446 | 
            +
                    # is used.
         | 
| 438 447 | 
             
                    #
         | 
| 439 | 
            -
                    # See also {#dead_letter_max_delivery_attempts=}, {#dead_letter_topic=}  | 
| 448 | 
            +
                    # See also {#dead_letter_max_delivery_attempts=}, {#dead_letter_topic=}, {#dead_letter_topic}
         | 
| 449 | 
            +
                    # and {#remove_dead_letter_policy}.
         | 
| 440 450 | 
             
                    #
         | 
| 441 451 | 
             
                    # Makes an API call to retrieve the value when called on a reference object. See {#reference?}.
         | 
| 442 452 | 
             
                    #
         | 
| 443 | 
            -
                    # @return [Integer, nil] A value between 5 and 100 | 
| 444 | 
            -
                    #   value is 0, a default value of 5 is used.
         | 
| 453 | 
            +
                    # @return [Integer, nil] A value between `5` and `100`, or `nil` if no dead letter policy is configured.
         | 
| 445 454 | 
             
                    #
         | 
| 446 455 | 
             
                    # @example
         | 
| 447 456 | 
             
                    #   require "google/cloud/pubsub"
         | 
| @@ -468,10 +477,13 @@ module Google | |
| 468 477 | 
             
                    #
         | 
| 469 478 | 
             
                    # This field will be honored on a best effort basis. If this parameter is 0, a default value of 5 is used.
         | 
| 470 479 | 
             
                    #
         | 
| 471 | 
            -
                    # The dead letter topic must  | 
| 480 | 
            +
                    # The dead letter topic must be set first. See {#dead_letter_topic=}, {#dead_letter_topic} and
         | 
| 481 | 
            +
                    # {#remove_dead_letter_policy}.
         | 
| 472 482 | 
             
                    #
         | 
| 473 | 
            -
                    # @param [Integer] new_dead_letter_max_delivery_attempts A value between 5 and 100. If this parameter is | 
| 474 | 
            -
                    #   default value of 5 is used.
         | 
| 483 | 
            +
                    # @param [Integer, nil] new_dead_letter_max_delivery_attempts A value between 5 and 100. If this parameter is
         | 
| 484 | 
            +
                    #   `nil` or `0`, a default value of 5 is used.
         | 
| 485 | 
            +
                    #
         | 
| 486 | 
            +
                    # @raise [ArgumentError] if the dead letter topic has not been set. See {#dead_letter_topic=}.
         | 
| 475 487 | 
             
                    #
         | 
| 476 488 | 
             
                    # @example
         | 
| 477 489 | 
             
                    #   require "google/cloud/pubsub"
         | 
| @@ -496,6 +508,39 @@ module Google | |
| 496 508 | 
             
                      @resource_name = nil
         | 
| 497 509 | 
             
                    end
         | 
| 498 510 |  | 
| 511 | 
            +
                    ##
         | 
| 512 | 
            +
                    # Removes an existing dead letter policy. A dead letter policy specifies the conditions for dead lettering
         | 
| 513 | 
            +
                    # messages in the subscription. If a dead letter policy is not set, dead lettering is disabled.
         | 
| 514 | 
            +
                    #
         | 
| 515 | 
            +
                    # See {#dead_letter_topic}, {#dead_letter_topic=}, {#dead_letter_max_delivery_attempts} and
         | 
| 516 | 
            +
                    # {#dead_letter_max_delivery_attempts=}.
         | 
| 517 | 
            +
                    #
         | 
| 518 | 
            +
                    # @return [Boolean] `true` if an existing dead letter policy was removed, `false` if no existing dead letter
         | 
| 519 | 
            +
                    #   policy was present.
         | 
| 520 | 
            +
                    #
         | 
| 521 | 
            +
                    # @example
         | 
| 522 | 
            +
                    #   require "google/cloud/pubsub"
         | 
| 523 | 
            +
                    #
         | 
| 524 | 
            +
                    #   pubsub = Google::Cloud::PubSub.new
         | 
| 525 | 
            +
                    #
         | 
| 526 | 
            +
                    #   sub = pubsub.subscription "my-topic-sub"
         | 
| 527 | 
            +
                    #
         | 
| 528 | 
            +
                    #   sub.dead_letter_topic.name #=> "projects/my-project/topics/my-dead-letter-topic"
         | 
| 529 | 
            +
                    #   sub.dead_letter_max_delivery_attempts #=> 10
         | 
| 530 | 
            +
                    #
         | 
| 531 | 
            +
                    #   sub.remove_dead_letter_policy
         | 
| 532 | 
            +
                    #
         | 
| 533 | 
            +
                    #   sub.dead_letter_topic #=> nil
         | 
| 534 | 
            +
                    #   sub.dead_letter_max_delivery_attempts #=> nil
         | 
| 535 | 
            +
                    #
         | 
| 536 | 
            +
                    def remove_dead_letter_policy
         | 
| 537 | 
            +
                      ensure_grpc!
         | 
| 538 | 
            +
                      return false if @grpc.dead_letter_policy.nil?
         | 
| 539 | 
            +
                      update_grpc = Google::Cloud::PubSub::V1::Subscription.new name: name, dead_letter_policy: nil
         | 
| 540 | 
            +
                      @grpc = service.update_subscription update_grpc, :dead_letter_policy
         | 
| 541 | 
            +
                      true
         | 
| 542 | 
            +
                    end
         | 
| 543 | 
            +
             | 
| 499 544 | 
             
                    ##
         | 
| 500 545 | 
             
                    # A policy that specifies how Cloud Pub/Sub retries message delivery for this subscription. If `nil`, the
         | 
| 501 546 | 
             
                    # default retry policy is applied. This generally implies that messages will be retried as soon as possible
         | 
| @@ -566,7 +611,7 @@ module Google | |
| 566 611 | 
             
                    #
         | 
| 567 612 | 
             
                    # See {Topic#publish_async}, {#listen}, and {Message#ordering_key}.
         | 
| 568 613 | 
             
                    #
         | 
| 569 | 
            -
                    # Makes an API call to retrieve the  | 
| 614 | 
            +
                    # Makes an API call to retrieve the enable_message_ordering value when called on a
         | 
| 570 615 | 
             
                    # reference object. See {#reference?}.
         | 
| 571 616 | 
             
                    #
         | 
| 572 617 | 
             
                    # @return [Boolean]
         | 
| @@ -576,6 +621,35 @@ module Google | |
| 576 621 | 
             
                      @grpc.enable_message_ordering
         | 
| 577 622 | 
             
                    end
         | 
| 578 623 |  | 
| 624 | 
            +
                    ##
         | 
| 625 | 
            +
                    # Whether the subscription is detached from its topic. Detached subscriptions don't receive messages from their
         | 
| 626 | 
            +
                    # topic and don't retain any backlog. {#pull} and {#listen} (pull and streaming pull) operations will raise
         | 
| 627 | 
            +
                    # `FAILED_PRECONDITION`. If the subscription is a push subscription (see {#push_config}), pushes to the endpoint
         | 
| 628 | 
            +
                    # will not be made. The default value is `false`.
         | 
| 629 | 
            +
                    #
         | 
| 630 | 
            +
                    # See {Topic#subscribe} and {#detach}.
         | 
| 631 | 
            +
                    #
         | 
| 632 | 
            +
                    # Makes an API call to retrieve the value when called on a
         | 
| 633 | 
            +
                    # reference object. See {#reference?}.
         | 
| 634 | 
            +
                    #
         | 
| 635 | 
            +
                    # @return [Boolean]
         | 
| 636 | 
            +
                    #
         | 
| 637 | 
            +
                    # @example
         | 
| 638 | 
            +
                    #   require "google/cloud/pubsub"
         | 
| 639 | 
            +
                    #
         | 
| 640 | 
            +
                    #   pubsub = Google::Cloud::PubSub.new
         | 
| 641 | 
            +
                    #
         | 
| 642 | 
            +
                    #   sub = pubsub.subscription "my-topic-sub"
         | 
| 643 | 
            +
                    #   sub.detach
         | 
| 644 | 
            +
                    #
         | 
| 645 | 
            +
                    #   # sleep 120
         | 
| 646 | 
            +
                    #   sub.detached? #=> true
         | 
| 647 | 
            +
                    #
         | 
| 648 | 
            +
                    def detached?
         | 
| 649 | 
            +
                      ensure_grpc!
         | 
| 650 | 
            +
                      @grpc.detached
         | 
| 651 | 
            +
                    end
         | 
| 652 | 
            +
             | 
| 579 653 | 
             
                    ##
         | 
| 580 654 | 
             
                    # Determines whether the subscription exists in the Pub/Sub service.
         | 
| 581 655 | 
             
                    #
         | 
| @@ -623,6 +697,32 @@ module Google | |
| 623 697 | 
             
                      true
         | 
| 624 698 | 
             
                    end
         | 
| 625 699 |  | 
| 700 | 
            +
                    ##
         | 
| 701 | 
            +
                    # Detaches a subscription from its topic. All messages retained in the subscription are dropped. Detached
         | 
| 702 | 
            +
                    # subscriptions don't receive messages from their topic and don't retain any backlog. Subsequent {#pull} and
         | 
| 703 | 
            +
                    # {#listen} (pull and streaming pull) operations will raise `FAILED_PRECONDITION`. If the subscription is a push
         | 
| 704 | 
            +
                    # subscription (see {#push_config}), pushes to the endpoint will stop. It may take a few minutes for the
         | 
| 705 | 
            +
                    # subscription's detached state to be reflected in subsequent calls to {#detached?}.
         | 
| 706 | 
            +
                    #
         | 
| 707 | 
            +
                    # @return [Boolean] Returns `true` if the detach operation was successful.
         | 
| 708 | 
            +
                    #
         | 
| 709 | 
            +
                    # @example
         | 
| 710 | 
            +
                    #   require "google/cloud/pubsub"
         | 
| 711 | 
            +
                    #
         | 
| 712 | 
            +
                    #   pubsub = Google::Cloud::PubSub.new
         | 
| 713 | 
            +
                    #
         | 
| 714 | 
            +
                    #   sub = pubsub.subscription "my-topic-sub"
         | 
| 715 | 
            +
                    #   sub.detach
         | 
| 716 | 
            +
                    #
         | 
| 717 | 
            +
                    #   # sleep 120
         | 
| 718 | 
            +
                    #   sub.detached? #=> true
         | 
| 719 | 
            +
                    #
         | 
| 720 | 
            +
                    def detach
         | 
| 721 | 
            +
                      ensure_service!
         | 
| 722 | 
            +
                      service.detach_subscription name
         | 
| 723 | 
            +
                      true
         | 
| 724 | 
            +
                    end
         | 
| 725 | 
            +
             | 
| 626 726 | 
             
                    ##
         | 
| 627 727 | 
             
                    # Pulls messages from the server. Returns an empty list if there are no
         | 
| 628 728 | 
             
                    # messages available in the backlog. Raises an ApiError with status
         | 
| @@ -761,7 +861,8 @@ module Google | |
| 761 861 | 
             
                    # @param [Integer] streams The number of concurrent streams to open to
         | 
| 762 862 | 
             
                    #   pull messages from the subscription. Default is 4. Optional.
         | 
| 763 863 | 
             
                    # @param [Hash, Integer] inventory The settings to control how received messages are to be handled by the
         | 
| 764 | 
            -
                    #   subscriber. When provided as an Integer instead of a Hash only  | 
| 864 | 
            +
                    #   subscriber. When provided as an Integer instead of a Hash only `max_outstanding_messages` will be set.
         | 
| 865 | 
            +
                    #   Optional.
         | 
| 765 866 | 
             
                    #
         | 
| 766 867 | 
             
                    #   Hash keys and values may include the following:
         | 
| 767 868 | 
             
                    #
         | 
| @@ -801,6 +902,7 @@ module Google | |
| 801 902 | 
             
                    #
         | 
| 802 903 | 
             
                    #   subscriber = sub.listen do |received_message|
         | 
| 803 904 | 
             
                    #     # process message
         | 
| 905 | 
            +
                    #     puts "Data: #{received_message.message.data}, published at #{received_message.message.published_at}"
         | 
| 804 906 | 
             
                    #     received_message.acknowledge!
         | 
| 805 907 | 
             
                    #   end
         | 
| 806 908 | 
             
                    #
         | 
| @@ -808,7 +910,7 @@ module Google | |
| 808 910 | 
             
                    #   subscriber.start
         | 
| 809 911 | 
             
                    #
         | 
| 810 912 | 
             
                    #   # Shut down the subscriber when ready to stop receiving messages.
         | 
| 811 | 
            -
                    #   subscriber.stop | 
| 913 | 
            +
                    #   subscriber.stop!
         | 
| 812 914 | 
             
                    #
         | 
| 813 915 | 
             
                    # @example Configuring to increase concurrent callbacks:
         | 
| 814 916 | 
             
                    #   require "google/cloud/pubsub"
         | 
| @@ -827,7 +929,7 @@ module Google | |
| 827 929 | 
             
                    #   subscriber.start
         | 
| 828 930 | 
             
                    #
         | 
| 829 931 | 
             
                    #   # Shut down the subscriber when ready to stop receiving messages.
         | 
| 830 | 
            -
                    #   subscriber.stop | 
| 932 | 
            +
                    #   subscriber.stop!
         | 
| 831 933 | 
             
                    #
         | 
| 832 934 | 
             
                    # @example Ordered messages are supported using ordering_key:
         | 
| 833 935 | 
             
                    #   require "google/cloud/pubsub"
         | 
| @@ -847,7 +949,7 @@ module Google | |
| 847 949 | 
             
                    #   subscriber.start
         | 
| 848 950 | 
             
                    #
         | 
| 849 951 | 
             
                    #   # Shut down the subscriber when ready to stop receiving messages.
         | 
| 850 | 
            -
                    #   subscriber.stop | 
| 952 | 
            +
                    #   subscriber.stop!
         | 
| 851 953 | 
             
                    #
         | 
| 852 954 | 
             
                    # @example Set the maximum amount of time before redelivery if the subscriber fails to extend the deadline:
         | 
| 853 955 | 
             
                    #   require "google/cloud/pubsub"
         | 
| @@ -866,7 +968,7 @@ module Google | |
| 866 968 | 
             
                    #   subscriber.start
         | 
| 867 969 | 
             
                    #
         | 
| 868 970 | 
             
                    #   # Shut down the subscriber when ready to stop receiving messages.
         | 
| 869 | 
            -
                    #   subscriber.stop | 
| 971 | 
            +
                    #   subscriber.stop!
         | 
| 870 972 | 
             
                    #
         | 
| 871 973 | 
             
                    def listen deadline: nil, message_ordering: nil, streams: nil, inventory: nil, threads: {}, &block
         | 
| 872 974 | 
             
                      ensure_service!
         | 
| @@ -22,7 +22,18 @@ module Google | |
| 22 22 | 
             
                    ##
         | 
| 23 23 | 
             
                    # Configuration for a push delivery endpoint.
         | 
| 24 24 | 
             
                    #
         | 
| 25 | 
            -
                    # @example
         | 
| 25 | 
            +
                    # @example Create a push config:
         | 
| 26 | 
            +
                    #   require "google/cloud/pubsub"
         | 
| 27 | 
            +
                    #
         | 
| 28 | 
            +
                    #   pubsub = Google::Cloud::PubSub.new
         | 
| 29 | 
            +
                    #   topic = pubsub.topic "my-topic"
         | 
| 30 | 
            +
                    #
         | 
| 31 | 
            +
                    #   push_config = Google::Cloud::PubSub::Subscription::PushConfig.new endpoint: "http://example.net/callback"
         | 
| 32 | 
            +
                    #   push_config.set_oidc_token "service-account@example.net", "audience-header-value"
         | 
| 33 | 
            +
                    #
         | 
| 34 | 
            +
                    #   sub = topic.subscribe "my-subscription", push_config: push_config
         | 
| 35 | 
            +
                    #
         | 
| 36 | 
            +
                    # @example Read a push config:
         | 
| 26 37 | 
             
                    #   require "google/cloud/pubsub"
         | 
| 27 38 | 
             
                    #
         | 
| 28 39 | 
             
                    #   pubsub = Google::Cloud::PubSub.new
         | 
| @@ -32,7 +43,7 @@ module Google | |
| 32 43 | 
             
                    #   sub.push_config.authentication.email #=> "user@example.com"
         | 
| 33 44 | 
             
                    #   sub.push_config.authentication.audience #=> "client-12345"
         | 
| 34 45 | 
             
                    #
         | 
| 35 | 
            -
                    # @example Update  | 
| 46 | 
            +
                    # @example Update a push config:
         | 
| 36 47 | 
             
                    #   require "google/cloud/pubsub"
         | 
| 37 48 | 
             
                    #
         | 
| 38 49 | 
             
                    #   pubsub = Google::Cloud::PubSub.new
         | 
| @@ -45,14 +56,31 @@ module Google | |
| 45 56 | 
             
                    #
         | 
| 46 57 | 
             
                    class PushConfig
         | 
| 47 58 | 
             
                      ##
         | 
| 48 | 
            -
                      #  | 
| 49 | 
            -
                       | 
| 59 | 
            +
                      # Creates a new push configuration.
         | 
| 60 | 
            +
                      #
         | 
| 61 | 
            +
                      # @param [String] endpoint A URL locating the endpoint to which messages should be pushed. For
         | 
| 62 | 
            +
                      #   example, a Webhook endpoint might use `https://example.com/push`.
         | 
| 63 | 
            +
                      # @param [String] email The service account email to be used for generating the OIDC token.
         | 
| 64 | 
            +
                      #   The caller must have the `iam.serviceAccounts.actAs` permission for the service account.
         | 
| 65 | 
            +
                      # @param [String] audience The audience to be used when generating OIDC token. The audience claim identifies
         | 
| 66 | 
            +
                      #   the recipients that the JWT is intended for. The audience value is a single case-sensitive string. Having
         | 
| 67 | 
            +
                      #   multiple values (array) for the audience field is not supported. More info about the OIDC JWT token
         | 
| 68 | 
            +
                      #   audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the `endpoint`
         | 
| 69 | 
            +
                      #   URL will be used.
         | 
| 70 | 
            +
                      #
         | 
| 71 | 
            +
                      def initialize endpoint: nil, email: nil, audience: nil
         | 
| 50 72 | 
             
                        @grpc = Google::Cloud::PubSub::V1::PushConfig.new
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                        self.endpoint = endpoint unless endpoint.nil?
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                        raise ArgumentError, "audience provided without email. Authentication is invalid" if audience && !email
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                        set_oidc_token email, audience if email
         | 
| 51 79 | 
             
                      end
         | 
| 52 80 |  | 
| 53 81 | 
             
                      ##
         | 
| 54 | 
            -
                      # A URL locating the endpoint to which messages should be pushed. For
         | 
| 55 | 
            -
                      #  | 
| 82 | 
            +
                      # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use
         | 
| 83 | 
            +
                      # `https://example.com/push`.
         | 
| 56 84 | 
             
                      #
         | 
| 57 85 | 
             
                      # @return [String]
         | 
| 58 86 | 
             
                      def endpoint
         | 
| @@ -60,9 +88,8 @@ module Google | |
| 60 88 | 
             
                      end
         | 
| 61 89 |  | 
| 62 90 | 
             
                      ##
         | 
| 63 | 
            -
                      # Sets the URL locating the endpoint to which messages should be
         | 
| 64 | 
            -
                      #  | 
| 65 | 
            -
                      # `https://example.com/push`.
         | 
| 91 | 
            +
                      # Sets the URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might
         | 
| 92 | 
            +
                      # use `https://example.com/push`.
         | 
| 66 93 | 
             
                      #
         | 
| 67 94 | 
             
                      # @param [String, nil] new_endpoint New URL value
         | 
| 68 95 | 
             
                      def endpoint= new_endpoint
         | 
| @@ -70,8 +97,7 @@ module Google | |
| 70 97 | 
             
                      end
         | 
| 71 98 |  | 
| 72 99 | 
             
                      ##
         | 
| 73 | 
            -
                      # The authentication method used by push endpoints to verify the
         | 
| 74 | 
            -
                      # source of push requests.
         | 
| 100 | 
            +
                      # The authentication method used by push endpoints to verify the source of push requests.
         | 
| 75 101 | 
             
                      #
         | 
| 76 102 | 
             
                      # @return [OidcToken, nil] An OIDC JWT token if specified, `nil`
         | 
| 77 103 | 
             
                      #   otherwise.
         | 
| @@ -82,8 +108,7 @@ module Google | |
| 82 108 | 
             
                      end
         | 
| 83 109 |  | 
| 84 110 | 
             
                      ##
         | 
| 85 | 
            -
                      # Sets the authentication method used by push endpoints to verify the
         | 
| 86 | 
            -
                      # source of push requests.
         | 
| 111 | 
            +
                      # Sets the authentication method used by push endpoints to verify the source of push requests.
         | 
| 87 112 | 
             
                      #
         | 
| 88 113 | 
             
                      # @param [OidcToken, nil] new_auth An authentication value.
         | 
| 89 114 | 
             
                      def authentication= new_auth
         | 
| @@ -118,13 +143,12 @@ module Google | |
| 118 143 | 
             
                      end
         | 
| 119 144 |  | 
| 120 145 | 
             
                      ##
         | 
| 121 | 
            -
                      # The format of the pushed message. This attribute indicates the
         | 
| 122 | 
            -
                      #  | 
| 123 | 
            -
                      #  | 
| 124 | 
            -
                      # endpoint version is based on the version of the Pub/Sub API.
         | 
| 146 | 
            +
                      # The format of the pushed message. This attribute indicates the version of the data expected by the endpoint.
         | 
| 147 | 
            +
                      # This controls the shape of the pushed message (i.e., its fields and metadata). The endpoint version is based
         | 
| 148 | 
            +
                      # on the version of the Pub/Sub API.
         | 
| 125 149 | 
             
                      #
         | 
| 126 | 
            -
                      # If not present during the Subscription creation, it will default to
         | 
| 127 | 
            -
                      #  | 
| 150 | 
            +
                      # If not present during the Subscription creation, it will default to the version of the API used to make such
         | 
| 151 | 
            +
                      # call.
         | 
| 128 152 | 
             
                      #
         | 
| 129 153 | 
             
                      # The possible values for this attribute are:
         | 
| 130 154 | 
             
                      #
         | 
| @@ -182,7 +206,8 @@ module Google | |
| 182 206 | 
             
                        end
         | 
| 183 207 |  | 
| 184 208 | 
             
                        ##
         | 
| 185 | 
            -
                        #  | 
| 209 | 
            +
                        # The service account email to be used for generating the OIDC token. The caller must have the
         | 
| 210 | 
            +
                        # `iam.serviceAccounts.actAs` permission for the service account.
         | 
| 186 211 | 
             
                        #
         | 
| 187 212 | 
             
                        # @return [String]
         | 
| 188 213 | 
             
                        def email
         | 
| @@ -190,7 +215,8 @@ module Google | |
| 190 215 | 
             
                        end
         | 
| 191 216 |  | 
| 192 217 | 
             
                        ##
         | 
| 193 | 
            -
                        #  | 
| 218 | 
            +
                        # Sets the service account email to be used for generating the OIDC token. The caller must have the
         | 
| 219 | 
            +
                        # `iam.serviceAccounts.actAs` permission for the service account.
         | 
| 194 220 | 
             
                        #
         | 
| 195 221 | 
             
                        # @param [String] new_email New service account email value.
         | 
| 196 222 | 
             
                        def email= new_email
         | 
| @@ -198,15 +224,10 @@ module Google | |
| 198 224 | 
             
                        end
         | 
| 199 225 |  | 
| 200 226 | 
             
                        ##
         | 
| 201 | 
            -
                        #  | 
| 202 | 
            -
                        #  | 
| 203 | 
            -
                        # audience  | 
| 204 | 
            -
                        #
         | 
| 205 | 
            -
                        # Having multiple values (array) for the audience field is not
         | 
| 206 | 
            -
                        # supported.
         | 
| 207 | 
            -
                        #
         | 
| 208 | 
            -
                        # More info about the OIDC JWT token audience here:
         | 
| 209 | 
            -
                        # https://tools.ietf.org/html/rfc7519#section-4.1.3
         | 
| 227 | 
            +
                        # The audience to be used when generating OIDC token. The audience claim identifies the recipients that
         | 
| 228 | 
            +
                        # the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values
         | 
| 229 | 
            +
                        # (array) for the audience field is not supported. More info about the OIDC JWT token audience here:
         | 
| 230 | 
            +
                        # https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the `endpoint` URL will be used.
         | 
| 210 231 | 
             
                        #
         | 
| 211 232 | 
             
                        # @return [String]
         | 
| 212 233 | 
             
                        def audience
         | 
| @@ -214,7 +235,10 @@ module Google | |
| 214 235 | 
             
                        end
         | 
| 215 236 |  | 
| 216 237 | 
             
                        ##
         | 
| 217 | 
            -
                        # Sets the audience to be used when generating OIDC token.
         | 
| 238 | 
            +
                        # Sets the audience to be used when generating OIDC token. The audience claim identifies the recipients that
         | 
| 239 | 
            +
                        # the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values
         | 
| 240 | 
            +
                        # (array) for the audience field is not supported. More info about the OIDC JWT token audience here:
         | 
| 241 | 
            +
                        # https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the `endpoint` URL will be used.
         | 
| 218 242 | 
             
                        #
         | 
| 219 243 | 
             
                        # @param [String] new_audience New audience value.
         | 
| 220 244 | 
             
                        def audience= new_audience
         |