google-cloud-pubsub 1.7.1 → 2.1.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 -260
- data/lib/google/cloud/pubsub/subscriber.rb +3 -3
- data/lib/google/cloud/pubsub/subscriber/stream.rb +3 -2
- data/lib/google/cloud/pubsub/subscription.rb +86 -11
- data/lib/google/cloud/pubsub/subscription/push_config.rb +55 -31
- data/lib/google/cloud/pubsub/topic.rb +52 -14
- 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 -807
- 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 -1463
- data/lib/google/cloud/pubsub/v1/subscriber_client_config.json +0 -153
- data/lib/google/pubsub/v1/pubsub_pb.rb +0 -266
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +0 -215
| @@ -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,143 +145,93 @@ 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
         | 
| 168 | 
            +
                      paged_enum = subscriber.list_subscriptions project:    project_path(options),
         | 
| 169 | 
            +
                                                                 page_size:  options[:max],
         | 
| 170 | 
            +
                                                                 page_token: options[:token]
         | 
| 224 171 |  | 
| 225 | 
            -
                       | 
| 226 | 
            -
                        paged_enum = subscriber.list_subscriptions project_path(options),
         | 
| 227 | 
            -
                                                                   page_size: options[:max],
         | 
| 228 | 
            -
                                                                   options:   call_options
         | 
| 229 | 
            -
             | 
| 230 | 
            -
                        paged_enum.page.response
         | 
| 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 | 
            -
                       | 
| 238 | 
            -
             | 
| 239 | 
            -
             | 
| 240 | 
            -
             | 
| 241 | 
            -
             | 
| 242 | 
            -
             | 
| 243 | 
            -
             | 
| 244 | 
            -
             | 
| 245 | 
            -
             | 
| 246 | 
            -
             | 
| 247 | 
            -
             | 
| 248 | 
            -
             | 
| 249 | 
            -
                      execute do
         | 
| 250 | 
            -
                        subscriber.create_subscription \
         | 
| 251 | 
            -
                          name, topic,
         | 
| 252 | 
            -
                          push_config:                push_config,
         | 
| 253 | 
            -
                          ack_deadline_seconds:       deadline,
         | 
| 254 | 
            -
                          retain_acked_messages:      retain_acked,
         | 
| 255 | 
            -
                          message_retention_duration: mrd,
         | 
| 256 | 
            -
                          labels:                     labels,
         | 
| 257 | 
            -
                          enable_message_ordering:    message_ordering,
         | 
| 258 | 
            -
                          dead_letter_policy:         dead_letter_policy(options),
         | 
| 259 | 
            -
                          retry_policy:               options[:retry_policy],
         | 
| 260 | 
            -
                          options:                    default_options
         | 
| 261 | 
            -
                      end
         | 
| 178 | 
            +
                      subscriber.create_subscription \
         | 
| 179 | 
            +
                        name:                       subscription_path(subscription_name, options),
         | 
| 180 | 
            +
                        topic:                      topic_path(topic),
         | 
| 181 | 
            +
                        push_config:                options[:push_config],
         | 
| 182 | 
            +
                        ack_deadline_seconds:       options[:deadline],
         | 
| 183 | 
            +
                        retain_acked_messages:      options[:retain_acked],
         | 
| 184 | 
            +
                        message_retention_duration: Convert.number_to_duration(options[:retention]),
         | 
| 185 | 
            +
                        labels:                     options[:labels],
         | 
| 186 | 
            +
                        enable_message_ordering:    options[:message_ordering],
         | 
| 187 | 
            +
                        filter:                     options[:filter],
         | 
| 188 | 
            +
                        dead_letter_policy:         dead_letter_policy(options),
         | 
| 189 | 
            +
                        retry_policy:               options[:retry_policy]
         | 
| 262 190 | 
             
                    end
         | 
| 263 191 |  | 
| 264 192 | 
             
                    def update_subscription subscription_obj, *fields
         | 
| 265 193 | 
             
                      mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
         | 
| 266 | 
            -
                       | 
| 267 | 
            -
                        subscriber.update_subscription subscription_obj, mask, options: default_options
         | 
| 268 | 
            -
                      end
         | 
| 194 | 
            +
                      subscriber.update_subscription subscription: subscription_obj, update_mask: mask
         | 
| 269 195 | 
             
                    end
         | 
| 270 196 |  | 
| 271 197 | 
             
                    ##
         | 
| 272 | 
            -
                    # Deletes an existing subscription.
         | 
| 273 | 
            -
                    # All pending messages in the subscription are immediately dropped.
         | 
| 198 | 
            +
                    # Deletes an existing subscription. All pending messages in the subscription are immediately dropped.
         | 
| 274 199 | 
             
                    def delete_subscription subscription
         | 
| 275 | 
            -
                       | 
| 276 | 
            -
             | 
| 277 | 
            -
             | 
| 278 | 
            -
             | 
| 200 | 
            +
                      subscriber.delete_subscription subscription: subscription_path(subscription)
         | 
| 201 | 
            +
                    end
         | 
| 202 | 
            +
             | 
| 203 | 
            +
                    ##
         | 
| 204 | 
            +
                    # Detaches a subscription from its topic. All messages retained in the subscription are dropped. Subsequent
         | 
| 205 | 
            +
                    # `Pull` and `StreamingPull` requests will raise `FAILED_PRECONDITION`. If the subscription is a push
         | 
| 206 | 
            +
                    # subscription, pushes to the endpoint will stop.
         | 
| 207 | 
            +
                    def detach_subscription subscription
         | 
| 208 | 
            +
                      publisher.detach_subscription subscription: subscription_path(subscription)
         | 
| 279 209 | 
             
                    end
         | 
| 280 210 |  | 
| 281 211 | 
             
                    ##
         | 
| 282 212 | 
             
                    # Pulls a single message from the server.
         | 
| 283 213 | 
             
                    def pull subscription, options = {}
         | 
| 284 | 
            -
                      subscription = subscription_path subscription, options
         | 
| 285 214 | 
             
                      max_messages = options.fetch(:max, 100).to_i
         | 
| 286 215 | 
             
                      return_immediately = !(!options.fetch(:immediate, true))
         | 
| 287 216 |  | 
| 288 | 
            -
                       | 
| 289 | 
            -
             | 
| 290 | 
            -
             | 
| 291 | 
            -
                                        return_immediately: return_immediately,
         | 
| 292 | 
            -
                                        options:            default_options
         | 
| 293 | 
            -
                      end
         | 
| 217 | 
            +
                      subscriber.pull subscription:       subscription_path(subscription, options),
         | 
| 218 | 
            +
                                      max_messages:       max_messages,
         | 
| 219 | 
            +
                                      return_immediately: return_immediately
         | 
| 294 220 | 
             
                    end
         | 
| 295 221 |  | 
| 296 222 | 
             
                    def streaming_pull request_enum
         | 
| 297 | 
            -
                       | 
| 298 | 
            -
                        subscriber.streaming_pull request_enum, options: default_options
         | 
| 299 | 
            -
                      end
         | 
| 223 | 
            +
                      subscriber.streaming_pull request_enum
         | 
| 300 224 | 
             
                    end
         | 
| 301 225 |  | 
| 302 226 | 
             
                    ##
         | 
| 303 227 | 
             
                    # Acknowledges receipt of a message.
         | 
| 304 228 | 
             
                    def acknowledge subscription, *ack_ids
         | 
| 305 | 
            -
                       | 
| 306 | 
            -
                        subscriber.acknowledge subscription_path(subscription), ack_ids,
         | 
| 307 | 
            -
                                               options: default_options
         | 
| 308 | 
            -
                      end
         | 
| 229 | 
            +
                      subscriber.acknowledge subscription: subscription_path(subscription), ack_ids: ack_ids
         | 
| 309 230 | 
             
                    end
         | 
| 310 231 |  | 
| 311 232 | 
             
                    ##
         | 
| 312 233 | 
             
                    # Modifies the PushConfig for a specified subscription.
         | 
| 313 234 | 
             
                    def modify_push_config subscription, endpoint, attributes
         | 
| 314 | 
            -
                      subscription = subscription_path subscription
         | 
| 315 235 | 
             
                      # Convert attributes to strings to match the protobuf definition
         | 
| 316 236 | 
             
                      attributes = Hash[attributes.map { |k, v| [String(k), String(v)] }]
         | 
| 317 237 | 
             
                      push_config = Google::Cloud::PubSub::V1::PushConfig.new(
         | 
| @@ -319,138 +239,83 @@ module Google | |
| 319 239 | 
             
                        attributes:    attributes
         | 
| 320 240 | 
             
                      )
         | 
| 321 241 |  | 
| 322 | 
            -
                       | 
| 323 | 
            -
             | 
| 324 | 
            -
                                                      options: default_options
         | 
| 325 | 
            -
                      end
         | 
| 242 | 
            +
                      subscriber.modify_push_config subscription: subscription_path(subscription),
         | 
| 243 | 
            +
                                                    push_config:  push_config
         | 
| 326 244 | 
             
                    end
         | 
| 327 245 |  | 
| 328 246 | 
             
                    ##
         | 
| 329 247 | 
             
                    # Modifies the ack deadline for a specific message.
         | 
| 330 248 | 
             
                    def modify_ack_deadline subscription, ids, deadline
         | 
| 331 | 
            -
                       | 
| 332 | 
            -
             | 
| 333 | 
            -
             | 
| 334 | 
            -
                                                       deadline, options: default_options
         | 
| 335 | 
            -
                      end
         | 
| 249 | 
            +
                      subscriber.modify_ack_deadline subscription:         subscription_path(subscription),
         | 
| 250 | 
            +
                                                     ack_ids:              Array(ids),
         | 
| 251 | 
            +
                                                     ack_deadline_seconds: deadline
         | 
| 336 252 | 
             
                    end
         | 
| 337 253 |  | 
| 338 254 | 
             
                    ##
         | 
| 339 255 | 
             
                    # Lists snapshots by project.
         | 
| 340 256 | 
             
                    def list_snapshots options = {}
         | 
| 341 | 
            -
                       | 
| 342 | 
            -
             | 
| 343 | 
            -
             | 
| 344 | 
            -
                          kwargs:     default_headers,
         | 
| 345 | 
            -
                          page_token: token
         | 
| 346 | 
            -
                        )
         | 
| 347 | 
            -
                      end
         | 
| 348 | 
            -
             | 
| 349 | 
            -
                      execute do
         | 
| 350 | 
            -
                        paged_enum = subscriber.list_snapshots project_path(options),
         | 
| 351 | 
            -
                                                               page_size: options[:max],
         | 
| 352 | 
            -
                                                               options:   call_options
         | 
| 257 | 
            +
                      paged_enum = subscriber.list_snapshots project:    project_path(options),
         | 
| 258 | 
            +
                                                             page_size:  options[:max],
         | 
| 259 | 
            +
                                                             page_token: options[:token]
         | 
| 353 260 |  | 
| 354 | 
            -
             | 
| 355 | 
            -
                      end
         | 
| 261 | 
            +
                      paged_enum.response
         | 
| 356 262 | 
             
                    end
         | 
| 357 263 |  | 
| 358 264 | 
             
                    ##
         | 
| 359 265 | 
             
                    # Creates a snapshot on a given subscription.
         | 
| 360 266 | 
             
                    def create_snapshot subscription, snapshot_name, labels: nil
         | 
| 361 | 
            -
                      name | 
| 362 | 
            -
             | 
| 363 | 
            -
             | 
| 364 | 
            -
                                                   subscription_path(subscription),
         | 
| 365 | 
            -
                                                   labels:  labels,
         | 
| 366 | 
            -
                                                   options: default_options
         | 
| 367 | 
            -
                      end
         | 
| 267 | 
            +
                      subscriber.create_snapshot name:         snapshot_path(snapshot_name),
         | 
| 268 | 
            +
                                                 subscription: subscription_path(subscription),
         | 
| 269 | 
            +
                                                 labels:       labels
         | 
| 368 270 | 
             
                    end
         | 
| 369 271 |  | 
| 370 272 | 
             
                    def update_snapshot snapshot_obj, *fields
         | 
| 371 273 | 
             
                      mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
         | 
| 372 | 
            -
                       | 
| 373 | 
            -
                        subscriber.update_snapshot snapshot_obj, mask, options: default_options
         | 
| 374 | 
            -
                      end
         | 
| 274 | 
            +
                      subscriber.update_snapshot snapshot: snapshot_obj, update_mask: mask
         | 
| 375 275 | 
             
                    end
         | 
| 376 276 |  | 
| 377 277 | 
             
                    ##
         | 
| 378 278 | 
             
                    # Deletes an existing snapshot.
         | 
| 379 279 | 
             
                    # All pending messages in the snapshot are immediately dropped.
         | 
| 380 280 | 
             
                    def delete_snapshot snapshot
         | 
| 381 | 
            -
                       | 
| 382 | 
            -
                        subscriber.delete_snapshot snapshot_path(snapshot),
         | 
| 383 | 
            -
                                                   options: default_options
         | 
| 384 | 
            -
                      end
         | 
| 281 | 
            +
                      subscriber.delete_snapshot snapshot: snapshot_path(snapshot)
         | 
| 385 282 | 
             
                    end
         | 
| 386 283 |  | 
| 387 284 | 
             
                    ##
         | 
| 388 285 | 
             
                    # Adjusts the given subscription to a time or snapshot.
         | 
| 389 286 | 
             
                    def seek subscription, time_or_snapshot
         | 
| 390 | 
            -
                       | 
| 391 | 
            -
             | 
| 392 | 
            -
                         | 
| 393 | 
            -
             | 
| 394 | 
            -
             | 
| 395 | 
            -
                         | 
| 396 | 
            -
             | 
| 397 | 
            -
                          subscriber.seek subscription,
         | 
| 398 | 
            -
                                          snapshot: snapshot_path(time_or_snapshot),
         | 
| 399 | 
            -
                                          options:  default_options
         | 
| 400 | 
            -
                        end
         | 
| 287 | 
            +
                      if a_time? time_or_snapshot
         | 
| 288 | 
            +
                        time = Convert.time_to_timestamp time_or_snapshot
         | 
| 289 | 
            +
                        subscriber.seek subscription: subscription, time: time
         | 
| 290 | 
            +
                      else
         | 
| 291 | 
            +
                        time_or_snapshot = time_or_snapshot.name if time_or_snapshot.is_a? Snapshot
         | 
| 292 | 
            +
                        subscriber.seek subscription: subscription_path(subscription),
         | 
| 293 | 
            +
                                        snapshot:     snapshot_path(time_or_snapshot)
         | 
| 401 294 | 
             
                      end
         | 
| 402 295 | 
             
                    end
         | 
| 403 296 |  | 
| 404 297 | 
             
                    def get_topic_policy topic_name, options = {}
         | 
| 405 | 
            -
                       | 
| 406 | 
            -
                        publisher.get_iam_policy topic_path(topic_name, options),
         | 
| 407 | 
            -
                                                 options: default_options
         | 
| 408 | 
            -
                      end
         | 
| 298 | 
            +
                      iam.get_iam_policy resource: topic_path(topic_name, options)
         | 
| 409 299 | 
             
                    end
         | 
| 410 300 |  | 
| 411 301 | 
             
                    def set_topic_policy topic_name, new_policy, options = {}
         | 
| 412 | 
            -
                      resource  | 
| 413 | 
            -
             | 
| 414 | 
            -
                      execute do
         | 
| 415 | 
            -
                        publisher.set_iam_policy resource, new_policy,
         | 
| 416 | 
            -
                                                 options: default_options
         | 
| 417 | 
            -
                      end
         | 
| 302 | 
            +
                      iam.set_iam_policy resource: topic_path(topic_name, options), policy: new_policy
         | 
| 418 303 | 
             
                    end
         | 
| 419 304 |  | 
| 420 305 | 
             
                    def test_topic_permissions topic_name, permissions, options = {}
         | 
| 421 | 
            -
                      resource  | 
| 422 | 
            -
             | 
| 423 | 
            -
                      execute do
         | 
| 424 | 
            -
                        publisher.test_iam_permissions resource, permissions,
         | 
| 425 | 
            -
                                                       options: default_options
         | 
| 426 | 
            -
                      end
         | 
| 306 | 
            +
                      iam.test_iam_permissions resource: topic_path(topic_name, options), permissions: permissions
         | 
| 427 307 | 
             
                    end
         | 
| 428 308 |  | 
| 429 309 | 
             
                    def get_subscription_policy subscription_name, options = {}
         | 
| 430 | 
            -
                      resource  | 
| 431 | 
            -
             | 
| 432 | 
            -
                      execute do
         | 
| 433 | 
            -
                        subscriber.get_iam_policy resource, options: default_options
         | 
| 434 | 
            -
                      end
         | 
| 310 | 
            +
                      iam.get_iam_policy resource: subscription_path(subscription_name, options)
         | 
| 435 311 | 
             
                    end
         | 
| 436 312 |  | 
| 437 313 | 
             
                    def set_subscription_policy subscription_name, new_policy, options = {}
         | 
| 438 | 
            -
                      resource  | 
| 439 | 
            -
             | 
| 440 | 
            -
                      execute do
         | 
| 441 | 
            -
                        subscriber.set_iam_policy resource, new_policy,
         | 
| 442 | 
            -
                                                  options: default_options
         | 
| 443 | 
            -
                      end
         | 
| 314 | 
            +
                      iam.set_iam_policy resource: subscription_path(subscription_name, options), policy: new_policy
         | 
| 444 315 | 
             
                    end
         | 
| 445 316 |  | 
| 446 | 
            -
                    def test_subscription_permissions subscription_name,
         | 
| 447 | 
            -
             | 
| 448 | 
            -
                      resource = subscription_path subscription_name, options
         | 
| 449 | 
            -
             | 
| 450 | 
            -
                      execute do
         | 
| 451 | 
            -
                        subscriber.test_iam_permissions resource, permissions,
         | 
| 452 | 
            -
                                                        options: default_options
         | 
| 453 | 
            -
                      end
         | 
| 317 | 
            +
                    def test_subscription_permissions subscription_name, permissions, options = {}
         | 
| 318 | 
            +
                      iam.test_iam_permissions resource: subscription_path(subscription_name, options), permissions: permissions
         | 
| 454 319 | 
             
                    end
         | 
| 455 320 |  | 
| 456 321 | 
             
                    def project_path options = {}
         | 
| @@ -494,21 +359,6 @@ module Google | |
| 494 359 | 
             
                      end
         | 
| 495 360 | 
             
                      policy
         | 
| 496 361 | 
             
                    end
         | 
| 497 | 
            -
             | 
| 498 | 
            -
                    def default_headers
         | 
| 499 | 
            -
                      { "google-cloud-resource-prefix" => "projects/#{@project}" }
         | 
| 500 | 
            -
                    end
         | 
| 501 | 
            -
             | 
| 502 | 
            -
                    def default_options
         | 
| 503 | 
            -
                      Google::Gax::CallOptions.new kwargs: default_headers
         | 
| 504 | 
            -
                    end
         | 
| 505 | 
            -
             | 
| 506 | 
            -
                    def execute
         | 
| 507 | 
            -
                      yield
         | 
| 508 | 
            -
                    rescue Google::Gax::GaxError => e
         | 
| 509 | 
            -
                      # GaxError wraps BadStatus, but exposes it as #cause
         | 
| 510 | 
            -
                      raise Google::Cloud::Error.from_error(e.cause)
         | 
| 511 | 
            -
                    end
         | 
| 512 362 | 
             
                  end
         | 
| 513 363 | 
             
                end
         | 
| 514 364 |  |