google-cloud-pubsub 1.10.0 → 2.0.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 +23 -0
- data/lib/google-cloud-pubsub.rb +13 -13
- data/lib/google/cloud/pubsub.rb +15 -18
- data/lib/google/cloud/pubsub/async_publisher.rb +1 -2
- data/lib/google/cloud/pubsub/credentials.rb +2 -2
- data/lib/google/cloud/pubsub/service.rb +102 -251
- data/lib/google/cloud/pubsub/subscriber/stream.rb +1 -2
- data/lib/google/cloud/pubsub/subscription.rb +1 -1
- data/lib/google/cloud/pubsub/version.rb +1 -1
- metadata +7 -78
- 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
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f5faee5de29df83057422ad7029a047eb10e8408a9b4e87599d301bc1c907a06
         | 
| 4 | 
            +
              data.tar.gz: bc9d9b75232d66b09b5d45310875fbbd734663cf226575e43656da47aa955204
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b59bc075932f2a592276a8e0472371a18a8cc6e835ccb6c36ece17f277528bf92813d978e06393cf384c54c282c8a04fa6ba1d2fcfab08214e3cb3a55d2724ac
         | 
| 7 | 
            +
              data.tar.gz: 8a6fffc01ab630eaf960c3c87858f942fe6a0241cfdf024875d379f2a915be724ea209bcfdc07c7ab12a1299949785456c27f0725d6d4b4cac519749cbc6f1fc
         | 
    
        data/AUTHENTICATION.md
    CHANGED
    
    | @@ -76,7 +76,8 @@ The environment variables that google-cloud-pubsub checks for project ID are: | |
| 76 76 | 
             
            1. `PUBSUB_PROJECT`
         | 
| 77 77 | 
             
            2. `GOOGLE_CLOUD_PROJECT`
         | 
| 78 78 |  | 
| 79 | 
            -
            The environment variables that google-cloud-pubsub checks for credentials | 
| 79 | 
            +
            The environment variables that google-cloud-pubsub checks for credentials
         | 
| 80 | 
            +
            are configured on {Google::Cloud::PubSub::Credentials}:
         | 
| 80 81 |  | 
| 81 82 | 
             
            1. `PUBSUB_CREDENTIALS` - Path to JSON file, or JSON contents
         | 
| 82 83 | 
             
            2. `PUBSUB_KEYFILE` - Path to JSON file, or JSON contents
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,28 @@ | |
| 1 1 | 
             
            # Release History
         | 
| 2 2 |  | 
| 3 | 
            +
            ### 2.0.0 / 2020-08-06
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            This is a major update that removes the "low-level" client interface code, and
         | 
| 6 | 
            +
            instead adds the new `google-cloud-pubsub-v1` gem as a dependency.
         | 
| 7 | 
            +
            The new dependency is a rewritten low-level client, produced by a next-
         | 
| 8 | 
            +
            generation client code generator, with improved performance and stability.
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            This change should have no effect on the high-level interface that most users
         | 
| 11 | 
            +
            will use. The one exception is that the (mostly undocumented) `client_config`
         | 
| 12 | 
            +
            argument, for adjusting low-level parameters such as RPC retry settings on
         | 
| 13 | 
            +
            client objects, has been removed. If you need to adjust these parameters, use
         | 
| 14 | 
            +
            the configuration interface in `google-cloud-pubsub-v1`.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            Substantial changes have been made in the low-level interfaces, however. If you
         | 
| 17 | 
            +
            are using the low-level classes under the `Google::Cloud::PubSub::V1` module,
         | 
| 18 | 
            +
            please review the docs for the new `google-cloud-pubsub-v1` gem. In
         | 
| 19 | 
            +
            particular:
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            * Some classes have been renamed, notably the client classes themselves.
         | 
| 22 | 
            +
            * The client constructor takes a configuration block instead of configuration
         | 
| 23 | 
            +
              keyword arguments.
         | 
| 24 | 
            +
            * All RPC method arguments are now keyword arguments.
         | 
| 25 | 
            +
             | 
| 3 26 | 
             
            ### 1.10.0 / 2020-07-23
         | 
| 4 27 |  | 
| 5 28 | 
             
            #### Features
         | 
    
        data/lib/google-cloud-pubsub.rb
    CHANGED
    
    | @@ -42,8 +42,6 @@ module Google | |
| 42 42 | 
             
                #
         | 
| 43 43 | 
             
                #   * `https://www.googleapis.com/auth/pubsub`
         | 
| 44 44 | 
             
                # @param [Integer] timeout Default timeout to use in requests. Optional.
         | 
| 45 | 
            -
                # @param [Hash] client_config A hash of values to override the default
         | 
| 46 | 
            -
                #   behavior of the API client. Optional.
         | 
| 47 45 | 
             
                #
         | 
| 48 46 | 
             
                # @return [Google::Cloud::PubSub::Project]
         | 
| 49 47 | 
             
                #
         | 
| @@ -62,9 +60,9 @@ module Google | |
| 62 60 | 
             
                #   platform_scope = "https://www.googleapis.com/auth/cloud-platform"
         | 
| 63 61 | 
             
                #   pubsub = gcloud.pubsub scope: platform_scope
         | 
| 64 62 | 
             
                #
         | 
| 65 | 
            -
                def pubsub scope: nil, timeout: nil | 
| 63 | 
            +
                def pubsub scope: nil, timeout: nil
         | 
| 66 64 | 
             
                  timeout ||= @timeout
         | 
| 67 | 
            -
                  Google::Cloud.pubsub @project, @keyfile, scope: scope, timeout: timeout | 
| 65 | 
            +
                  Google::Cloud.pubsub @project, @keyfile, scope: scope, timeout: timeout
         | 
| 68 66 | 
             
                end
         | 
| 69 67 |  | 
| 70 68 | 
             
                ##
         | 
| @@ -90,8 +88,6 @@ module Google | |
| 90 88 | 
             
                #
         | 
| 91 89 | 
             
                #   * `https://www.googleapis.com/auth/pubsub`
         | 
| 92 90 | 
             
                # @param [Integer] timeout Default timeout to use in requests. Optional.
         | 
| 93 | 
            -
                # @param [Hash] client_config A hash of values to override the default
         | 
| 94 | 
            -
                #   behavior of the API client. Optional.
         | 
| 95 91 | 
             
                #
         | 
| 96 92 | 
             
                # @return [Google::Cloud::PubSub::Project]
         | 
| 97 93 | 
             
                #
         | 
| @@ -103,11 +99,12 @@ module Google | |
| 103 99 | 
             
                #   topic = pubsub.topic "my-topic"
         | 
| 104 100 | 
             
                #   topic.publish "task completed"
         | 
| 105 101 | 
             
                #
         | 
| 106 | 
            -
                def self.pubsub project_id = nil, | 
| 107 | 
            -
                                 | 
| 102 | 
            +
                def self.pubsub project_id = nil,
         | 
| 103 | 
            +
                                credentials = nil,
         | 
| 104 | 
            +
                                scope: nil,
         | 
| 105 | 
            +
                                timeout: nil
         | 
| 108 106 | 
             
                  require "google/cloud/pubsub"
         | 
| 109 | 
            -
                  Google::Cloud::PubSub.new project_id: project_id, credentials: credentials,
         | 
| 110 | 
            -
                                            scope: scope, timeout: timeout, client_config: client_config
         | 
| 107 | 
            +
                  Google::Cloud::PubSub.new project_id: project_id, credentials: credentials, scope: scope, timeout: timeout
         | 
| 111 108 | 
             
                end
         | 
| 112 109 | 
             
              end
         | 
| 113 110 | 
             
            end
         | 
| @@ -125,15 +122,18 @@ Google::Cloud.configure.add_config! :pubsub do |config| | |
| 125 122 | 
             
              default_emulator = Google::Cloud::Config.deferred do
         | 
| 126 123 | 
             
                ENV["PUBSUB_EMULATOR_HOST"]
         | 
| 127 124 | 
             
              end
         | 
| 125 | 
            +
              default_scopes = [
         | 
| 126 | 
            +
                "https://www.googleapis.com/auth/cloud-platform",
         | 
| 127 | 
            +
                "https://www.googleapis.com/auth/pubsub"
         | 
| 128 | 
            +
              ]
         | 
| 128 129 |  | 
| 129 130 | 
             
              config.add_field! :project_id, default_project, match: String, allow_nil: true
         | 
| 130 131 | 
             
              config.add_alias! :project, :project_id
         | 
| 131 132 | 
             
              config.add_field! :credentials, default_creds, match: [String, Hash, Google::Auth::Credentials], allow_nil: true
         | 
| 132 133 | 
             
              config.add_alias! :keyfile, :credentials
         | 
| 133 | 
            -
              config.add_field! :scope,  | 
| 134 | 
            +
              config.add_field! :scope, default_scopes, match: [String, Array]
         | 
| 134 135 | 
             
              config.add_field! :timeout, nil, match: Integer
         | 
| 135 | 
            -
              config.add_field! :client_config, nil, match: Hash
         | 
| 136 136 | 
             
              config.add_field! :emulator_host, default_emulator, match: String, allow_nil: true
         | 
| 137 137 | 
             
              config.add_field! :on_error, nil, match: Proc
         | 
| 138 | 
            -
              config.add_field! :endpoint,  | 
| 138 | 
            +
              config.add_field! :endpoint, "pubsub.googleapis.com", match: String
         | 
| 139 139 | 
             
            end
         | 
    
        data/lib/google/cloud/pubsub.rb
    CHANGED
    
    | @@ -57,8 +57,6 @@ module Google | |
| 57 57 | 
             
                  #
         | 
| 58 58 | 
             
                  #   * `https://www.googleapis.com/auth/pubsub`
         | 
| 59 59 | 
             
                  # @param [Integer] timeout Default timeout to use in requests. Optional.
         | 
| 60 | 
            -
                  # @param [Hash] client_config A hash of values to override the default
         | 
| 61 | 
            -
                  #   behavior of the API client. Optional.
         | 
| 62 60 | 
             
                  # @param [String] endpoint Override of the endpoint host name. Optional.
         | 
| 63 61 | 
             
                  #   If the param is nil, uses the default endpoint.
         | 
| 64 62 | 
             
                  # @param [String] emulator_host Pub/Sub emulator host. Optional.
         | 
| @@ -77,12 +75,17 @@ module Google | |
| 77 75 | 
             
                  #   topic = pubsub.topic "my-topic"
         | 
| 78 76 | 
             
                  #   topic.publish "task completed"
         | 
| 79 77 | 
             
                  #
         | 
| 80 | 
            -
                  def self.new project_id: nil, | 
| 81 | 
            -
                                | 
| 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
         | 
| 82 86 | 
             
                    project_id    ||= (project || default_project_id)
         | 
| 83 87 | 
             
                    scope         ||= configure.scope
         | 
| 84 88 | 
             
                    timeout       ||= configure.timeout
         | 
| 85 | 
            -
                    client_config ||= configure.client_config
         | 
| 86 89 | 
             
                    endpoint      ||= configure.endpoint
         | 
| 87 90 | 
             
                    emulator_host ||= configure.emulator_host
         | 
| 88 91 |  | 
| @@ -90,11 +93,8 @@ module Google | |
| 90 93 | 
             
                      project_id = project_id.to_s # Always cast to a string
         | 
| 91 94 | 
             
                      raise ArgumentError, "project_id is missing" if project_id.empty?
         | 
| 92 95 |  | 
| 93 | 
            -
                       | 
| 94 | 
            -
             | 
| 95 | 
            -
                          project_id, :this_channel_is_insecure, host: emulator_host, timeout: timeout, client_config: client_config
         | 
| 96 | 
            -
                        )
         | 
| 97 | 
            -
                      )
         | 
| 96 | 
            +
                      service = PubSub::Service.new project_id, :this_channel_is_insecure, host: emulator_host, timeout: timeout
         | 
| 97 | 
            +
                      return PubSub::Project.new service
         | 
| 98 98 | 
             
                    end
         | 
| 99 99 |  | 
| 100 100 | 
             
                    credentials ||= (keyfile || default_credentials(scope: scope))
         | 
| @@ -106,11 +106,8 @@ module Google | |
| 106 106 | 
             
                    project_id = project_id.to_s # Always cast to a string
         | 
| 107 107 | 
             
                    raise ArgumentError, "project_id is missing" if project_id.empty?
         | 
| 108 108 |  | 
| 109 | 
            -
                    PubSub:: | 
| 110 | 
            -
             | 
| 111 | 
            -
                        project_id, credentials, timeout: timeout, host: endpoint, client_config: client_config
         | 
| 112 | 
            -
                      )
         | 
| 113 | 
            -
                    )
         | 
| 109 | 
            +
                    service = PubSub::Service.new project_id, credentials, host: endpoint, timeout: timeout
         | 
| 110 | 
            +
                    PubSub::Project.new service
         | 
| 114 111 | 
             
                  end
         | 
| 115 112 |  | 
| 116 113 | 
             
                  # rubocop:enable Metrics/AbcSize
         | 
| @@ -131,8 +128,6 @@ module Google | |
| 131 128 | 
             
                  # * `retries` - (Integer) Number of times to retry requests on server
         | 
| 132 129 | 
             
                  #   error.
         | 
| 133 130 | 
             
                  # * `timeout` - (Integer) Default timeout to use in requests.
         | 
| 134 | 
            -
                  # * `client_config` - (Hash) A hash of values to override the default
         | 
| 135 | 
            -
                  #   behavior of the API client.
         | 
| 136 131 | 
             
                  # * `endpoint` - (String) Override of the endpoint host name, or `nil`
         | 
| 137 132 | 
             
                  #   to use the default endpoint.
         | 
| 138 133 | 
             
                  # * `emulator_host` - (String) Host name of the emulator. Defaults to
         | 
| @@ -167,7 +162,9 @@ module Google | |
| 167 162 | 
             
                  end
         | 
| 168 163 | 
             
                end
         | 
| 169 164 |  | 
| 170 | 
            -
                ## Legacy namespace
         | 
| 165 | 
            +
                ## Legacy veneer namespace
         | 
| 171 166 | 
             
                Pubsub = PubSub unless const_defined? :Pubsub
         | 
| 172 167 | 
             
              end
         | 
| 168 | 
            +
              ## Legacy generated client namespace
         | 
| 169 | 
            +
              Pubsub = Cloud::PubSub unless const_defined? :Pubsub
         | 
| 173 170 | 
             
            end
         | 
| @@ -374,8 +374,7 @@ module Google | |
| 374 374 |  | 
| 375 375 | 
             
                    PUBLISH_RETRY_ERRORS = [
         | 
| 376 376 | 
             
                      GRPC::Cancelled, GRPC::DeadlineExceeded, GRPC::Internal,
         | 
| 377 | 
            -
                      GRPC::ResourceExhausted, GRPC::Unauthenticated, GRPC::Unavailable | 
| 378 | 
            -
                      GRPC::Core::CallError
         | 
| 377 | 
            +
                      GRPC::ResourceExhausted, GRPC::Unauthenticated, GRPC::Unavailable
         | 
| 379 378 | 
             
                    ].freeze
         | 
| 380 379 |  | 
| 381 380 | 
             
                    def publish_batch_error_retryable? error
         | 
| @@ -14,7 +14,7 @@ | |
| 14 14 |  | 
| 15 15 |  | 
| 16 16 | 
             
            require "googleauth"
         | 
| 17 | 
            -
            require "google/cloud/pubsub/v1/credentials.rb"
         | 
| 17 | 
            +
            require "google/cloud/pubsub/v1/publisher/credentials.rb"
         | 
| 18 18 |  | 
| 19 19 | 
             
            module Google
         | 
| 20 20 | 
             
              module Cloud
         | 
| @@ -38,7 +38,7 @@ module Google | |
| 38 38 | 
             
                  #
         | 
| 39 39 | 
             
                  #   pubsub.project_id #=> "my-project"
         | 
| 40 40 | 
             
                  #
         | 
| 41 | 
            -
                  class Credentials < Google::Cloud::PubSub::V1::Credentials
         | 
| 41 | 
            +
                  class Credentials < Google::Cloud::PubSub::V1::Publisher::Credentials
         | 
| 42 42 | 
             
                  end
         | 
| 43 43 | 
             
                end
         | 
| 44 44 |  | 
| @@ -18,17 +18,15 @@ require "google/cloud/pubsub/credentials" | |
| 18 18 | 
             
            require "google/cloud/pubsub/convert"
         | 
| 19 19 | 
             
            require "google/cloud/pubsub/version"
         | 
| 20 20 | 
             
            require "google/cloud/pubsub/v1"
         | 
| 21 | 
            -
            require "google/gax/errors"
         | 
| 22 21 | 
             
            require "securerandom"
         | 
| 23 22 |  | 
| 24 23 | 
             
            module Google
         | 
| 25 24 | 
             
              module Cloud
         | 
| 26 25 | 
             
                module PubSub
         | 
| 27 26 | 
             
                  ##
         | 
| 28 | 
            -
                  # @private Represents the  | 
| 29 | 
            -
                  # methods.
         | 
| 27 | 
            +
                  # @private Represents the Pub/Sub service API, including IAM mixins.
         | 
| 30 28 | 
             
                  class Service
         | 
| 31 | 
            -
                    attr_accessor :project, :credentials, :host, :timeout | 
| 29 | 
            +
                    attr_accessor :project, :credentials, :host, :timeout
         | 
| 32 30 | 
             
                    ###
         | 
| 33 31 | 
             
                    # The same client_id is used across all streaming pull connections that are created by this client. This is
         | 
| 34 32 | 
             
                    # intentional, as it indicates to the server that any guarantees, such as message ordering, made for a stream
         | 
| @@ -38,44 +36,25 @@ module Google | |
| 38 36 |  | 
| 39 37 | 
             
                    ##
         | 
| 40 38 | 
             
                    # Creates a new Service instance.
         | 
| 41 | 
            -
                    def initialize project, credentials, host: nil, timeout: nil | 
| 42 | 
            -
                                   client_config: nil
         | 
| 39 | 
            +
                    def initialize project, credentials, host: nil, timeout: nil
         | 
| 43 40 | 
             
                      @project = project
         | 
| 44 41 | 
             
                      @credentials = credentials
         | 
| 45 | 
            -
                      @host = host | 
| 42 | 
            +
                      @host = host
         | 
| 46 43 | 
             
                      @timeout = timeout
         | 
| 47 | 
            -
                      @client_config = client_config || {}
         | 
| 48 44 | 
             
                      @client_id = SecureRandom.uuid.freeze
         | 
| 49 45 | 
             
                    end
         | 
| 50 46 |  | 
| 51 | 
            -
                    def channel
         | 
| 52 | 
            -
                      require "grpc"
         | 
| 53 | 
            -
                      GRPC::Core::Channel.new host, chan_args, chan_creds
         | 
| 54 | 
            -
                    end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                    def chan_args
         | 
| 57 | 
            -
                      { "grpc.max_send_message_length"           => -1,
         | 
| 58 | 
            -
                        "grpc.max_receive_message_length"        => -1,
         | 
| 59 | 
            -
                        "grpc.keepalive_time_ms"                 => 300_000,
         | 
| 60 | 
            -
                        "grpc.service_config_disable_resolution" => 1 }
         | 
| 61 | 
            -
                    end
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                    def chan_creds
         | 
| 64 | 
            -
                      return credentials if insecure?
         | 
| 65 | 
            -
                      require "grpc"
         | 
| 66 | 
            -
                      GRPC::Core::ChannelCredentials.new.compose GRPC::Core::CallCredentials.new credentials.client.updater_proc
         | 
| 67 | 
            -
                    end
         | 
| 68 | 
            -
             | 
| 69 47 | 
             
                    def subscriber
         | 
| 70 48 | 
             
                      return mocked_subscriber if mocked_subscriber
         | 
| 71 49 | 
             
                      @subscriber ||= begin
         | 
| 72 | 
            -
                        V1:: | 
| 73 | 
            -
                          credentials | 
| 74 | 
            -
                          timeout | 
| 75 | 
            -
                           | 
| 76 | 
            -
                          lib_name | 
| 77 | 
            -
                          lib_version | 
| 78 | 
            -
             | 
| 50 | 
            +
                        V1::Subscriber::Client.new do |config|
         | 
| 51 | 
            +
                          config.credentials = credentials if credentials
         | 
| 52 | 
            +
                          config.timeout = timeout if timeout
         | 
| 53 | 
            +
                          config.endpoint = host if host
         | 
| 54 | 
            +
                          config.lib_name = "gccl"
         | 
| 55 | 
            +
                          config.lib_version = Google::Cloud::PubSub::VERSION
         | 
| 56 | 
            +
                          config.metadata = { "google-cloud-resource-prefix": "projects/#{@project}" }
         | 
| 57 | 
            +
                        end
         | 
| 79 58 | 
             
                      end
         | 
| 80 59 | 
             
                    end
         | 
| 81 60 | 
             
                    attr_accessor :mocked_subscriber
         | 
| @@ -83,20 +62,32 @@ module Google | |
| 83 62 | 
             
                    def publisher
         | 
| 84 63 | 
             
                      return mocked_publisher if mocked_publisher
         | 
| 85 64 | 
             
                      @publisher ||= begin
         | 
| 86 | 
            -
                        V1:: | 
| 87 | 
            -
                          credentials | 
| 88 | 
            -
                          timeout | 
| 89 | 
            -
                           | 
| 90 | 
            -
                          lib_name | 
| 91 | 
            -
                          lib_version | 
| 92 | 
            -
             | 
| 65 | 
            +
                        V1::Publisher::Client.new do |config|
         | 
| 66 | 
            +
                          config.credentials = credentials if credentials
         | 
| 67 | 
            +
                          config.timeout = timeout if timeout
         | 
| 68 | 
            +
                          config.endpoint = host if host
         | 
| 69 | 
            +
                          config.lib_name = "gccl"
         | 
| 70 | 
            +
                          config.lib_version = Google::Cloud::PubSub::VERSION
         | 
| 71 | 
            +
                          config.metadata = { "google-cloud-resource-prefix": "projects/#{@project}" }
         | 
| 72 | 
            +
                        end
         | 
| 93 73 | 
             
                      end
         | 
| 94 74 | 
             
                    end
         | 
| 95 75 | 
             
                    attr_accessor :mocked_publisher
         | 
| 96 76 |  | 
| 97 | 
            -
                    def  | 
| 98 | 
            -
                       | 
| 77 | 
            +
                    def iam
         | 
| 78 | 
            +
                      return mocked_iam if mocked_iam
         | 
| 79 | 
            +
                      @iam ||= begin
         | 
| 80 | 
            +
                        V1::IAMPolicy::Client.new do |config|
         | 
| 81 | 
            +
                          config.credentials = credentials if credentials
         | 
| 82 | 
            +
                          config.timeout = timeout if timeout
         | 
| 83 | 
            +
                          config.endpoint = host if host
         | 
| 84 | 
            +
                          config.lib_name = "gccl"
         | 
| 85 | 
            +
                          config.lib_version = Google::Cloud::PubSub::VERSION
         | 
| 86 | 
            +
                          config.metadata = { "google-cloud-resource-prefix" => "projects/#{@project}" }
         | 
| 87 | 
            +
                        end
         | 
| 88 | 
            +
                      end
         | 
| 99 89 | 
             
                    end
         | 
| 90 | 
            +
                    attr_accessor :mocked_iam
         | 
| 100 91 |  | 
| 101 92 | 
             
                    ##
         | 
| 102 93 | 
             
                    # Gets the configuration of a topic.
         | 
| @@ -105,30 +96,17 @@ module Google | |
| 105 96 | 
             
                    # If other attributes are added in the future,
         | 
| 106 97 | 
             
                    # they will be returned here.
         | 
| 107 98 | 
             
                    def get_topic topic_name, options = {}
         | 
| 108 | 
            -
                       | 
| 109 | 
            -
                        publisher.get_topic topic_path(topic_name, options),
         | 
| 110 | 
            -
                                            options: default_options
         | 
| 111 | 
            -
                      end
         | 
| 99 | 
            +
                      publisher.get_topic topic: topic_path(topic_name, options)
         | 
| 112 100 | 
             
                    end
         | 
| 113 101 |  | 
| 114 102 | 
             
                    ##
         | 
| 115 103 | 
             
                    # Lists matching topics.
         | 
| 116 104 | 
             
                    def list_topics options = {}
         | 
| 117 | 
            -
                       | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
                          kwargs:     default_headers,
         | 
| 121 | 
            -
                          page_token: token
         | 
| 122 | 
            -
                        )
         | 
| 123 | 
            -
                      end
         | 
| 105 | 
            +
                      paged_enum = publisher.list_topics project:    project_path(options),
         | 
| 106 | 
            +
                                                         page_size:  options[:max],
         | 
| 107 | 
            +
                                                         page_token: options[:token]
         | 
| 124 108 |  | 
| 125 | 
            -
                       | 
| 126 | 
            -
                        paged_enum = publisher.list_topics project_path(options),
         | 
| 127 | 
            -
                                                           page_size: options[:max],
         | 
| 128 | 
            -
                                                           options:   call_options
         | 
| 129 | 
            -
             | 
| 130 | 
            -
                        paged_enum.page.response
         | 
| 131 | 
            -
                      end
         | 
| 109 | 
            +
                      paged_enum.response
         | 
| 132 110 | 
             
                    end
         | 
| 133 111 |  | 
| 134 112 | 
             
                    ##
         | 
| @@ -140,21 +118,16 @@ module Google | |
| 140 118 | 
             
                        }
         | 
| 141 119 | 
             
                      end
         | 
| 142 120 |  | 
| 143 | 
            -
                       | 
| 144 | 
            -
                         | 
| 145 | 
            -
             | 
| 146 | 
            -
             | 
| 147 | 
            -
             | 
| 148 | 
            -
                          message_storage_policy: message_storage_policy,
         | 
| 149 | 
            -
                          options:                default_options
         | 
| 150 | 
            -
                      end
         | 
| 121 | 
            +
                      publisher.create_topic \
         | 
| 122 | 
            +
                        name:                   topic_path(topic_name, options),
         | 
| 123 | 
            +
                        labels:                 labels,
         | 
| 124 | 
            +
                        kms_key_name:           kms_key_name,
         | 
| 125 | 
            +
                        message_storage_policy: message_storage_policy
         | 
| 151 126 | 
             
                    end
         | 
| 152 127 |  | 
| 153 128 | 
             
                    def update_topic topic_obj, *fields
         | 
| 154 129 | 
             
                      mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
         | 
| 155 | 
            -
                       | 
| 156 | 
            -
                        publisher.update_topic topic_obj, mask, options: default_options
         | 
| 157 | 
            -
                      end
         | 
| 130 | 
            +
                      publisher.update_topic topic: topic_obj, update_mask: mask
         | 
| 158 131 | 
             
                    end
         | 
| 159 132 |  | 
| 160 133 | 
             
                    ##
         | 
| @@ -163,10 +136,7 @@ module Google | |
| 163 136 | 
             
                    # exist. After a topic is deleted, a new topic may be created with the
         | 
| 164 137 | 
             
                    # same name.
         | 
| 165 138 | 
             
                    def delete_topic topic_name
         | 
| 166 | 
            -
                       | 
| 167 | 
            -
                        publisher.delete_topic topic_path(topic_name),
         | 
| 168 | 
            -
                                               options: default_options
         | 
| 169 | 
            -
                      end
         | 
| 139 | 
            +
                      publisher.delete_topic topic: topic_path(topic_name)
         | 
| 170 140 | 
             
                    end
         | 
| 171 141 |  | 
| 172 142 | 
             
                    ##
         | 
| @@ -175,101 +145,64 @@ module Google | |
| 175 145 | 
             
                    # The messages parameter is an array of arrays.
         | 
| 176 146 | 
             
                    # The first element is the data, second is attributes hash.
         | 
| 177 147 | 
             
                    def publish topic, messages
         | 
| 178 | 
            -
                       | 
| 179 | 
            -
                        publisher.publish topic_path(topic), messages,
         | 
| 180 | 
            -
                                          options: default_options
         | 
| 181 | 
            -
                      end
         | 
| 148 | 
            +
                      publisher.publish topic: topic_path(topic), messages: messages
         | 
| 182 149 | 
             
                    end
         | 
| 183 150 |  | 
| 184 151 | 
             
                    ##
         | 
| 185 152 | 
             
                    # Gets the details of a subscription.
         | 
| 186 153 | 
             
                    def get_subscription subscription_name, options = {}
         | 
| 187 | 
            -
                      subscription  | 
| 188 | 
            -
                      execute do
         | 
| 189 | 
            -
                        subscriber.get_subscription subscription, options: default_options
         | 
| 190 | 
            -
                      end
         | 
| 154 | 
            +
                      subscriber.get_subscription subscription: subscription_path(subscription_name, options)
         | 
| 191 155 | 
             
                    end
         | 
| 192 156 |  | 
| 193 157 | 
             
                    ##
         | 
| 194 158 | 
             
                    # Lists matching subscriptions by project and topic.
         | 
| 195 159 | 
             
                    def list_topics_subscriptions topic, options = {}
         | 
| 196 | 
            -
                       | 
| 197 | 
            -
             | 
| 198 | 
            -
             | 
| 199 | 
            -
                          kwargs:     default_headers,
         | 
| 200 | 
            -
                          page_token: token
         | 
| 201 | 
            -
                        )
         | 
| 202 | 
            -
                      end
         | 
| 203 | 
            -
             | 
| 204 | 
            -
                      execute do
         | 
| 205 | 
            -
                        paged_enum = publisher.list_topic_subscriptions \
         | 
| 206 | 
            -
                          topic_path(topic, options),
         | 
| 207 | 
            -
                          page_size: options[:max],
         | 
| 208 | 
            -
                          options:   call_options
         | 
| 209 | 
            -
             | 
| 210 | 
            -
                        paged_enum.page.response
         | 
| 211 | 
            -
                      end
         | 
| 160 | 
            +
                      publisher.list_topic_subscriptions topic:      topic_path(topic, options),
         | 
| 161 | 
            +
                                                         page_size:  options[:max],
         | 
| 162 | 
            +
                                                         page_token: options[:token]
         | 
| 212 163 | 
             
                    end
         | 
| 213 164 |  | 
| 214 165 | 
             
                    ##
         | 
| 215 166 | 
             
                    # Lists matching subscriptions by project.
         | 
| 216 167 | 
             
                    def list_subscriptions options = {}
         | 
| 217 | 
            -
                       | 
| 218 | 
            -
             | 
| 219 | 
            -
             | 
| 220 | 
            -
                          kwargs:     default_headers,
         | 
| 221 | 
            -
                          page_token: token
         | 
| 222 | 
            -
                        )
         | 
| 223 | 
            -
                      end
         | 
| 224 | 
            -
             | 
| 225 | 
            -
                      execute do
         | 
| 226 | 
            -
                        paged_enum = subscriber.list_subscriptions project_path(options),
         | 
| 227 | 
            -
                                                                   page_size: options[:max],
         | 
| 228 | 
            -
                                                                   options:   call_options
         | 
| 168 | 
            +
                      paged_enum = subscriber.list_subscriptions project:    project_path(options),
         | 
| 169 | 
            +
                                                                 page_size:  options[:max],
         | 
| 170 | 
            +
                                                                 page_token: options[:token]
         | 
| 229 171 |  | 
| 230 | 
            -
             | 
| 231 | 
            -
                      end
         | 
| 172 | 
            +
                      paged_enum.response
         | 
| 232 173 | 
             
                    end
         | 
| 233 174 |  | 
| 234 175 | 
             
                    ##
         | 
| 235 176 | 
             
                    # Creates a subscription on a given topic for a given subscriber.
         | 
| 236 177 | 
             
                    def create_subscription topic, subscription_name, options = {}
         | 
| 237 | 
            -
                      name = subscription_path subscription_name, options
         | 
| 238 | 
            -
                      topic = topic_path topic
         | 
| 239 178 | 
             
                      push_config = if options[:endpoint]
         | 
| 240 179 | 
             
                                      Google::Cloud::PubSub::V1::PushConfig.new \
         | 
| 241 180 | 
             
                                        push_endpoint: options[:endpoint],
         | 
| 242 181 | 
             
                                        attributes:    (options[:attributes] || {}).to_h
         | 
| 243 182 | 
             
                                    end
         | 
| 244 | 
            -
                       | 
| 245 | 
            -
                         | 
| 246 | 
            -
             | 
| 247 | 
            -
             | 
| 248 | 
            -
             | 
| 249 | 
            -
             | 
| 250 | 
            -
             | 
| 251 | 
            -
             | 
| 252 | 
            -
             | 
| 253 | 
            -
             | 
| 254 | 
            -
             | 
| 255 | 
            -
             | 
| 256 | 
            -
                          options:                    default_options
         | 
| 257 | 
            -
                      end
         | 
| 183 | 
            +
                      subscriber.create_subscription \
         | 
| 184 | 
            +
                        name:                       subscription_path(subscription_name, options),
         | 
| 185 | 
            +
                        topic:                      topic_path(topic),
         | 
| 186 | 
            +
                        push_config:                push_config,
         | 
| 187 | 
            +
                        ack_deadline_seconds:       options[:deadline],
         | 
| 188 | 
            +
                        retain_acked_messages:      options[:retain_acked],
         | 
| 189 | 
            +
                        message_retention_duration: Convert.number_to_duration(options[:retention]),
         | 
| 190 | 
            +
                        labels:                     options[:labels],
         | 
| 191 | 
            +
                        enable_message_ordering:    options[:message_ordering],
         | 
| 192 | 
            +
                        filter:                     options[:filter],
         | 
| 193 | 
            +
                        dead_letter_policy:         dead_letter_policy(options),
         | 
| 194 | 
            +
                        retry_policy:               options[:retry_policy]
         | 
| 258 195 | 
             
                    end
         | 
| 259 196 |  | 
| 260 197 | 
             
                    def update_subscription subscription_obj, *fields
         | 
| 261 198 | 
             
                      mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
         | 
| 262 | 
            -
                       | 
| 263 | 
            -
                        subscriber.update_subscription subscription_obj, mask, options: default_options
         | 
| 264 | 
            -
                      end
         | 
| 199 | 
            +
                      subscriber.update_subscription subscription: subscription_obj, update_mask: mask
         | 
| 265 200 | 
             
                    end
         | 
| 266 201 |  | 
| 267 202 | 
             
                    ##
         | 
| 268 203 | 
             
                    # Deletes an existing subscription. All pending messages in the subscription are immediately dropped.
         | 
| 269 204 | 
             
                    def delete_subscription subscription
         | 
| 270 | 
            -
                       | 
| 271 | 
            -
                        subscriber.delete_subscription subscription_path(subscription), options: default_options
         | 
| 272 | 
            -
                      end
         | 
| 205 | 
            +
                      subscriber.delete_subscription subscription: subscription_path(subscription)
         | 
| 273 206 | 
             
                    end
         | 
| 274 207 |  | 
| 275 208 | 
             
                    ##
         | 
| @@ -277,45 +210,33 @@ module Google | |
| 277 210 | 
             
                    # `Pull` and `StreamingPull` requests will raise `FAILED_PRECONDITION`. If the subscription is a push
         | 
| 278 211 | 
             
                    # subscription, pushes to the endpoint will stop.
         | 
| 279 212 | 
             
                    def detach_subscription subscription
         | 
| 280 | 
            -
                       | 
| 281 | 
            -
                        publisher.detach_subscription subscription_path(subscription), options: default_options
         | 
| 282 | 
            -
                      end
         | 
| 213 | 
            +
                      publisher.detach_subscription subscription: subscription_path(subscription)
         | 
| 283 214 | 
             
                    end
         | 
| 284 215 |  | 
| 285 216 | 
             
                    ##
         | 
| 286 217 | 
             
                    # Pulls a single message from the server.
         | 
| 287 218 | 
             
                    def pull subscription, options = {}
         | 
| 288 | 
            -
                      subscription = subscription_path subscription, options
         | 
| 289 219 | 
             
                      max_messages = options.fetch(:max, 100).to_i
         | 
| 290 220 | 
             
                      return_immediately = !(!options.fetch(:immediate, true))
         | 
| 291 221 |  | 
| 292 | 
            -
                       | 
| 293 | 
            -
             | 
| 294 | 
            -
             | 
| 295 | 
            -
                                        return_immediately: return_immediately,
         | 
| 296 | 
            -
                                        options:            default_options
         | 
| 297 | 
            -
                      end
         | 
| 222 | 
            +
                      subscriber.pull subscription:       subscription_path(subscription, options),
         | 
| 223 | 
            +
                                      max_messages:       max_messages,
         | 
| 224 | 
            +
                                      return_immediately: return_immediately
         | 
| 298 225 | 
             
                    end
         | 
| 299 226 |  | 
| 300 227 | 
             
                    def streaming_pull request_enum
         | 
| 301 | 
            -
                       | 
| 302 | 
            -
                        subscriber.streaming_pull request_enum, options: default_options
         | 
| 303 | 
            -
                      end
         | 
| 228 | 
            +
                      subscriber.streaming_pull request_enum
         | 
| 304 229 | 
             
                    end
         | 
| 305 230 |  | 
| 306 231 | 
             
                    ##
         | 
| 307 232 | 
             
                    # Acknowledges receipt of a message.
         | 
| 308 233 | 
             
                    def acknowledge subscription, *ack_ids
         | 
| 309 | 
            -
                       | 
| 310 | 
            -
                        subscriber.acknowledge subscription_path(subscription), ack_ids,
         | 
| 311 | 
            -
                                               options: default_options
         | 
| 312 | 
            -
                      end
         | 
| 234 | 
            +
                      subscriber.acknowledge subscription: subscription_path(subscription), ack_ids: ack_ids
         | 
| 313 235 | 
             
                    end
         | 
| 314 236 |  | 
| 315 237 | 
             
                    ##
         | 
| 316 238 | 
             
                    # Modifies the PushConfig for a specified subscription.
         | 
| 317 239 | 
             
                    def modify_push_config subscription, endpoint, attributes
         | 
| 318 | 
            -
                      subscription = subscription_path subscription
         | 
| 319 240 | 
             
                      # Convert attributes to strings to match the protobuf definition
         | 
| 320 241 | 
             
                      attributes = Hash[attributes.map { |k, v| [String(k), String(v)] }]
         | 
| 321 242 | 
             
                      push_config = Google::Cloud::PubSub::V1::PushConfig.new(
         | 
| @@ -323,138 +244,83 @@ module Google | |
| 323 244 | 
             
                        attributes:    attributes
         | 
| 324 245 | 
             
                      )
         | 
| 325 246 |  | 
| 326 | 
            -
                       | 
| 327 | 
            -
             | 
| 328 | 
            -
                                                      options: default_options
         | 
| 329 | 
            -
                      end
         | 
| 247 | 
            +
                      subscriber.modify_push_config subscription: subscription_path(subscription),
         | 
| 248 | 
            +
                                                    push_config:  push_config
         | 
| 330 249 | 
             
                    end
         | 
| 331 250 |  | 
| 332 251 | 
             
                    ##
         | 
| 333 252 | 
             
                    # Modifies the ack deadline for a specific message.
         | 
| 334 253 | 
             
                    def modify_ack_deadline subscription, ids, deadline
         | 
| 335 | 
            -
                       | 
| 336 | 
            -
             | 
| 337 | 
            -
             | 
| 338 | 
            -
                                                       deadline, options: default_options
         | 
| 339 | 
            -
                      end
         | 
| 254 | 
            +
                      subscriber.modify_ack_deadline subscription:         subscription_path(subscription),
         | 
| 255 | 
            +
                                                     ack_ids:              Array(ids),
         | 
| 256 | 
            +
                                                     ack_deadline_seconds: deadline
         | 
| 340 257 | 
             
                    end
         | 
| 341 258 |  | 
| 342 259 | 
             
                    ##
         | 
| 343 260 | 
             
                    # Lists snapshots by project.
         | 
| 344 261 | 
             
                    def list_snapshots options = {}
         | 
| 345 | 
            -
                       | 
| 346 | 
            -
             | 
| 347 | 
            -
             | 
| 348 | 
            -
                          kwargs:     default_headers,
         | 
| 349 | 
            -
                          page_token: token
         | 
| 350 | 
            -
                        )
         | 
| 351 | 
            -
                      end
         | 
| 262 | 
            +
                      paged_enum = subscriber.list_snapshots project:    project_path(options),
         | 
| 263 | 
            +
                                                             page_size:  options[:max],
         | 
| 264 | 
            +
                                                             page_token: options[:token]
         | 
| 352 265 |  | 
| 353 | 
            -
                       | 
| 354 | 
            -
                        paged_enum = subscriber.list_snapshots project_path(options),
         | 
| 355 | 
            -
                                                               page_size: options[:max],
         | 
| 356 | 
            -
                                                               options:   call_options
         | 
| 357 | 
            -
             | 
| 358 | 
            -
                        paged_enum.page.response
         | 
| 359 | 
            -
                      end
         | 
| 266 | 
            +
                      paged_enum.response
         | 
| 360 267 | 
             
                    end
         | 
| 361 268 |  | 
| 362 269 | 
             
                    ##
         | 
| 363 270 | 
             
                    # Creates a snapshot on a given subscription.
         | 
| 364 271 | 
             
                    def create_snapshot subscription, snapshot_name, labels: nil
         | 
| 365 | 
            -
                      name | 
| 366 | 
            -
             | 
| 367 | 
            -
             | 
| 368 | 
            -
                                                   subscription_path(subscription),
         | 
| 369 | 
            -
                                                   labels:  labels,
         | 
| 370 | 
            -
                                                   options: default_options
         | 
| 371 | 
            -
                      end
         | 
| 272 | 
            +
                      subscriber.create_snapshot name:         snapshot_path(snapshot_name),
         | 
| 273 | 
            +
                                                 subscription: subscription_path(subscription),
         | 
| 274 | 
            +
                                                 labels:       labels
         | 
| 372 275 | 
             
                    end
         | 
| 373 276 |  | 
| 374 277 | 
             
                    def update_snapshot snapshot_obj, *fields
         | 
| 375 278 | 
             
                      mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
         | 
| 376 | 
            -
                       | 
| 377 | 
            -
                        subscriber.update_snapshot snapshot_obj, mask, options: default_options
         | 
| 378 | 
            -
                      end
         | 
| 279 | 
            +
                      subscriber.update_snapshot snapshot: snapshot_obj, update_mask: mask
         | 
| 379 280 | 
             
                    end
         | 
| 380 281 |  | 
| 381 282 | 
             
                    ##
         | 
| 382 283 | 
             
                    # Deletes an existing snapshot.
         | 
| 383 284 | 
             
                    # All pending messages in the snapshot are immediately dropped.
         | 
| 384 285 | 
             
                    def delete_snapshot snapshot
         | 
| 385 | 
            -
                       | 
| 386 | 
            -
                        subscriber.delete_snapshot snapshot_path(snapshot),
         | 
| 387 | 
            -
                                                   options: default_options
         | 
| 388 | 
            -
                      end
         | 
| 286 | 
            +
                      subscriber.delete_snapshot snapshot: snapshot_path(snapshot)
         | 
| 389 287 | 
             
                    end
         | 
| 390 288 |  | 
| 391 289 | 
             
                    ##
         | 
| 392 290 | 
             
                    # Adjusts the given subscription to a time or snapshot.
         | 
| 393 291 | 
             
                    def seek subscription, time_or_snapshot
         | 
| 394 | 
            -
                       | 
| 395 | 
            -
             | 
| 396 | 
            -
                         | 
| 397 | 
            -
             | 
| 398 | 
            -
             | 
| 399 | 
            -
                         | 
| 400 | 
            -
             | 
| 401 | 
            -
                          subscriber.seek subscription,
         | 
| 402 | 
            -
                                          snapshot: snapshot_path(time_or_snapshot),
         | 
| 403 | 
            -
                                          options:  default_options
         | 
| 404 | 
            -
                        end
         | 
| 292 | 
            +
                      if a_time? time_or_snapshot
         | 
| 293 | 
            +
                        time = Convert.time_to_timestamp time_or_snapshot
         | 
| 294 | 
            +
                        subscriber.seek subscription: subscription, time: time
         | 
| 295 | 
            +
                      else
         | 
| 296 | 
            +
                        time_or_snapshot = time_or_snapshot.name if time_or_snapshot.is_a? Snapshot
         | 
| 297 | 
            +
                        subscriber.seek subscription: subscription_path(subscription),
         | 
| 298 | 
            +
                                        snapshot:     snapshot_path(time_or_snapshot)
         | 
| 405 299 | 
             
                      end
         | 
| 406 300 | 
             
                    end
         | 
| 407 301 |  | 
| 408 302 | 
             
                    def get_topic_policy topic_name, options = {}
         | 
| 409 | 
            -
                       | 
| 410 | 
            -
                        publisher.get_iam_policy topic_path(topic_name, options),
         | 
| 411 | 
            -
                                                 options: default_options
         | 
| 412 | 
            -
                      end
         | 
| 303 | 
            +
                      iam.get_iam_policy resource: topic_path(topic_name, options)
         | 
| 413 304 | 
             
                    end
         | 
| 414 305 |  | 
| 415 306 | 
             
                    def set_topic_policy topic_name, new_policy, options = {}
         | 
| 416 | 
            -
                      resource  | 
| 417 | 
            -
             | 
| 418 | 
            -
                      execute do
         | 
| 419 | 
            -
                        publisher.set_iam_policy resource, new_policy,
         | 
| 420 | 
            -
                                                 options: default_options
         | 
| 421 | 
            -
                      end
         | 
| 307 | 
            +
                      iam.set_iam_policy resource: topic_path(topic_name, options), policy: new_policy
         | 
| 422 308 | 
             
                    end
         | 
| 423 309 |  | 
| 424 310 | 
             
                    def test_topic_permissions topic_name, permissions, options = {}
         | 
| 425 | 
            -
                      resource  | 
| 426 | 
            -
             | 
| 427 | 
            -
                      execute do
         | 
| 428 | 
            -
                        publisher.test_iam_permissions resource, permissions,
         | 
| 429 | 
            -
                                                       options: default_options
         | 
| 430 | 
            -
                      end
         | 
| 311 | 
            +
                      iam.test_iam_permissions resource: topic_path(topic_name, options), permissions: permissions
         | 
| 431 312 | 
             
                    end
         | 
| 432 313 |  | 
| 433 314 | 
             
                    def get_subscription_policy subscription_name, options = {}
         | 
| 434 | 
            -
                      resource  | 
| 435 | 
            -
             | 
| 436 | 
            -
                      execute do
         | 
| 437 | 
            -
                        subscriber.get_iam_policy resource, options: default_options
         | 
| 438 | 
            -
                      end
         | 
| 315 | 
            +
                      iam.get_iam_policy resource: subscription_path(subscription_name, options)
         | 
| 439 316 | 
             
                    end
         | 
| 440 317 |  | 
| 441 318 | 
             
                    def set_subscription_policy subscription_name, new_policy, options = {}
         | 
| 442 | 
            -
                      resource  | 
| 443 | 
            -
             | 
| 444 | 
            -
                      execute do
         | 
| 445 | 
            -
                        subscriber.set_iam_policy resource, new_policy,
         | 
| 446 | 
            -
                                                  options: default_options
         | 
| 447 | 
            -
                      end
         | 
| 319 | 
            +
                      iam.set_iam_policy resource: subscription_path(subscription_name, options), policy: new_policy
         | 
| 448 320 | 
             
                    end
         | 
| 449 321 |  | 
| 450 | 
            -
                    def test_subscription_permissions subscription_name,
         | 
| 451 | 
            -
             | 
| 452 | 
            -
                      resource = subscription_path subscription_name, options
         | 
| 453 | 
            -
             | 
| 454 | 
            -
                      execute do
         | 
| 455 | 
            -
                        subscriber.test_iam_permissions resource, permissions,
         | 
| 456 | 
            -
                                                        options: default_options
         | 
| 457 | 
            -
                      end
         | 
| 322 | 
            +
                    def test_subscription_permissions subscription_name, permissions, options = {}
         | 
| 323 | 
            +
                      iam.test_iam_permissions resource: subscription_path(subscription_name, options), permissions: permissions
         | 
| 458 324 | 
             
                    end
         | 
| 459 325 |  | 
| 460 326 | 
             
                    def project_path options = {}
         | 
| @@ -498,21 +364,6 @@ module Google | |
| 498 364 | 
             
                      end
         | 
| 499 365 | 
             
                      policy
         | 
| 500 366 | 
             
                    end
         | 
| 501 | 
            -
             | 
| 502 | 
            -
                    def default_headers
         | 
| 503 | 
            -
                      { "google-cloud-resource-prefix" => "projects/#{@project}" }
         | 
| 504 | 
            -
                    end
         | 
| 505 | 
            -
             | 
| 506 | 
            -
                    def default_options
         | 
| 507 | 
            -
                      Google::Gax::CallOptions.new kwargs: default_headers
         | 
| 508 | 
            -
                    end
         | 
| 509 | 
            -
             | 
| 510 | 
            -
                    def execute
         | 
| 511 | 
            -
                      yield
         | 
| 512 | 
            -
                    rescue Google::Gax::GaxError => e
         | 
| 513 | 
            -
                      # GaxError wraps BadStatus, but exposes it as #cause
         | 
| 514 | 
            -
                      raise Google::Cloud::Error.from_error(e.cause)
         | 
| 515 | 
            -
                    end
         | 
| 516 367 | 
             
                  end
         | 
| 517 368 | 
             
                end
         | 
| 518 369 |  |