google-cloud-pubsub 0.23.0 → 0.23.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d0e9bc24ac24e253b616f802e54362dc8df6fc8
4
- data.tar.gz: abac9248d857f8b09e4e5cc62159acd06e1d651f
3
+ metadata.gz: edaab95bea428b012e4d4140021eacf1101217e4
4
+ data.tar.gz: dacbd91c662d112accfed0358f39f47772ad6765
5
5
  SHA512:
6
- metadata.gz: 021dff90b476a4b5e27918eefe187df46fb0d1686c31f3efe3c6ecdce1b338b88b8fea0f1e84892b52200d8ce30b4f2147b9a3947be42f4707a93d9cd679c0fa
7
- data.tar.gz: b4bd1fbb9f336c7caf81566118b33541590b74154cd2db267263e816122cc82c7c94afb0574317c5146b8d0a8b1d152d08c47366212ad42da0f9057dece4d979
6
+ metadata.gz: b681c9885ff292601453dcb235d4a3d3b8faa71dac2db7527e7cfc8084fc0be9452e9ee3faeb451d833c44e3da407217eebb201b4e5bc854396d9cdc91c7d433
7
+ data.tar.gz: 25b78fc9efa359d9e071a703a92f36ccfa1e4f88e69edea86203855235124dd8c120090b048b9df968f1e436a1fc0f647794e71d1209d610fdc73c283f04d688
@@ -59,8 +59,8 @@ module Google
59
59
  channel: channel,
60
60
  timeout: timeout,
61
61
  client_config: client_config,
62
- app_name: "gcloud-ruby",
63
- app_version: Google::Cloud::Pubsub::VERSION)
62
+ lib_name: "gccl",
63
+ lib_version: Google::Cloud::Pubsub::VERSION)
64
64
  end
65
65
  end
66
66
  attr_accessor :mocked_subscriber
@@ -72,8 +72,8 @@ module Google
72
72
  service_path: host,
73
73
  channel: channel,
74
74
  timeout: timeout,
75
- app_name: "gcloud-ruby",
76
- app_version: Google::Cloud::Pubsub::VERSION)
75
+ lib_name: "gccl",
76
+ lib_version: Google::Cloud::Pubsub::VERSION)
77
77
  end
78
78
  end
79
79
  attr_accessor :mocked_publisher
@@ -0,0 +1,71 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Protobuf
17
+ # A Duration represents a signed, fixed-length span of time represented
18
+ # as a count of seconds and fractions of seconds at nanosecond
19
+ # resolution. It is independent of any calendar and concepts like "day"
20
+ # or "month". It is related to Timestamp in that the difference between
21
+ # two Timestamp values is a Duration and it can be added or subtracted
22
+ # from a Timestamp. Range is approximately +-10,000 years.
23
+ #
24
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
25
+ #
26
+ # Timestamp start = ...;
27
+ # Timestamp end = ...;
28
+ # Duration duration = ...;
29
+ #
30
+ # duration.seconds = end.seconds - start.seconds;
31
+ # duration.nanos = end.nanos - start.nanos;
32
+ #
33
+ # if (duration.seconds < 0 && duration.nanos > 0) {
34
+ # duration.seconds += 1;
35
+ # duration.nanos -= 1000000000;
36
+ # } else if (durations.seconds > 0 && duration.nanos < 0) {
37
+ # duration.seconds -= 1;
38
+ # duration.nanos += 1000000000;
39
+ # }
40
+ #
41
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
42
+ #
43
+ # Timestamp start = ...;
44
+ # Duration duration = ...;
45
+ # Timestamp end = ...;
46
+ #
47
+ # end.seconds = start.seconds + duration.seconds;
48
+ # end.nanos = start.nanos + duration.nanos;
49
+ #
50
+ # if (end.nanos < 0) {
51
+ # end.seconds -= 1;
52
+ # end.nanos += 1000000000;
53
+ # } else if (end.nanos >= 1000000000) {
54
+ # end.seconds += 1;
55
+ # end.nanos -= 1000000000;
56
+ # }
57
+ # @!attribute [rw] seconds
58
+ # @return [Integer]
59
+ # Signed seconds of the span of time. Must be from -315,576,000,000
60
+ # to +315,576,000,000 inclusive.
61
+ # @!attribute [rw] nanos
62
+ # @return [Integer]
63
+ # Signed fractions of a second at nanosecond resolution of the span
64
+ # of time. Durations less than one second are represented with a 0
65
+ # +seconds+ field and a positive or negative +nanos+ field. For durations
66
+ # of one second or more, a non-zero value for the +nanos+ field must be
67
+ # of the same sign as the +seconds+ field. Must be from -999,999,999
68
+ # to +999,999,999 inclusive.
69
+ class Duration; end
70
+ end
71
+ end
@@ -0,0 +1,171 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Protobuf
17
+ # +FieldMask+ represents a set of symbolic field paths, for example:
18
+ #
19
+ # paths: "f.a"
20
+ # paths: "f.b.d"
21
+ #
22
+ # Here +f+ represents a field in some root message, +a+ and +b+
23
+ # fields in the message found in +f+, and +d+ a field found in the
24
+ # message in +f.b+.
25
+ #
26
+ # Field masks are used to specify a subset of fields that should be
27
+ # returned by a get operation or modified by an update operation.
28
+ # Field masks also have a custom JSON encoding (see below).
29
+ #
30
+ # = Field Masks in Projections
31
+ #
32
+ # When used in the context of a projection, a response message or
33
+ # sub-message is filtered by the API to only contain those fields as
34
+ # specified in the mask. For example, if the mask in the previous
35
+ # example is applied to a response message as follows:
36
+ #
37
+ # f {
38
+ # a : 22
39
+ # b {
40
+ # d : 1
41
+ # x : 2
42
+ # }
43
+ # y : 13
44
+ # }
45
+ # z: 8
46
+ #
47
+ # The result will not contain specific values for fields x,y and z
48
+ # (their value will be set to the default, and omitted in proto text
49
+ # output):
50
+ #
51
+ #
52
+ # f {
53
+ # a : 22
54
+ # b {
55
+ # d : 1
56
+ # }
57
+ # }
58
+ #
59
+ # A repeated field is not allowed except at the last position of a
60
+ # field mask.
61
+ #
62
+ # If a FieldMask object is not present in a get operation, the
63
+ # operation applies to all fields (as if a FieldMask of all fields
64
+ # had been specified).
65
+ #
66
+ # Note that a field mask does not necessarily apply to the
67
+ # top-level response message. In case of a REST get operation, the
68
+ # field mask applies directly to the response, but in case of a REST
69
+ # list operation, the mask instead applies to each individual message
70
+ # in the returned resource list. In case of a REST custom method,
71
+ # other definitions may be used. Where the mask applies will be
72
+ # clearly documented together with its declaration in the API. In
73
+ # any case, the effect on the returned resource/resources is required
74
+ # behavior for APIs.
75
+ #
76
+ # = Field Masks in Update Operations
77
+ #
78
+ # A field mask in update operations specifies which fields of the
79
+ # targeted resource are going to be updated. The API is required
80
+ # to only change the values of the fields as specified in the mask
81
+ # and leave the others untouched. If a resource is passed in to
82
+ # describe the updated values, the API ignores the values of all
83
+ # fields not covered by the mask.
84
+ #
85
+ # In order to reset a field's value to the default, the field must
86
+ # be in the mask and set to the default value in the provided resource.
87
+ # Hence, in order to reset all fields of a resource, provide a default
88
+ # instance of the resource and set all fields in the mask, or do
89
+ # not provide a mask as described below.
90
+ #
91
+ # If a field mask is not present on update, the operation applies to
92
+ # all fields (as if a field mask of all fields has been specified).
93
+ # Note that in the presence of schema evolution, this may mean that
94
+ # fields the client does not know and has therefore not filled into
95
+ # the request will be reset to their default. If this is unwanted
96
+ # behavior, a specific service may require a client to always specify
97
+ # a field mask, producing an error if not.
98
+ #
99
+ # As with get operations, the location of the resource which
100
+ # describes the updated values in the request message depends on the
101
+ # operation kind. In any case, the effect of the field mask is
102
+ # required to be honored by the API.
103
+ #
104
+ # == Considerations for HTTP REST
105
+ #
106
+ # The HTTP kind of an update operation which uses a field mask must
107
+ # be set to PATCH instead of PUT in order to satisfy HTTP semantics
108
+ # (PUT must only be used for full updates).
109
+ #
110
+ # = JSON Encoding of Field Masks
111
+ #
112
+ # In JSON, a field mask is encoded as a single string where paths are
113
+ # separated by a comma. Fields name in each path are converted
114
+ # to/from lower-camel naming conventions.
115
+ #
116
+ # As an example, consider the following message declarations:
117
+ #
118
+ # message Profile {
119
+ # User user = 1;
120
+ # Photo photo = 2;
121
+ # }
122
+ # message User {
123
+ # string display_name = 1;
124
+ # string address = 2;
125
+ # }
126
+ #
127
+ # In proto a field mask for +Profile+ may look as such:
128
+ #
129
+ # mask {
130
+ # paths: "user.display_name"
131
+ # paths: "photo"
132
+ # }
133
+ #
134
+ # In JSON, the same mask is represented as below:
135
+ #
136
+ # {
137
+ # mask: "user.displayName,photo"
138
+ # }
139
+ #
140
+ # = Field Masks and Oneof Fields
141
+ #
142
+ # Field masks treat fields in oneofs just as regular fields. Consider the
143
+ # following message:
144
+ #
145
+ # message SampleMessage {
146
+ # oneof test_oneof {
147
+ # string name = 4;
148
+ # SubMessage sub_message = 9;
149
+ # }
150
+ # }
151
+ #
152
+ # The field mask can be:
153
+ #
154
+ # mask {
155
+ # paths: "name"
156
+ # }
157
+ #
158
+ # Or:
159
+ #
160
+ # mask {
161
+ # paths: "sub_message"
162
+ # }
163
+ #
164
+ # Note that oneof type names ("test_oneof" in this case) cannot be used in
165
+ # paths.
166
+ # @!attribute [rw] paths
167
+ # @return [Array<String>]
168
+ # The set of field mask paths.
169
+ class FieldMask; end
170
+ end
171
+ end
@@ -1,10 +1,10 @@
1
- # Copyright 2016 Google Inc. All rights reserved.
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
5
5
  # You may obtain a copy of the License at
6
6
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
8
  #
9
9
  # Unless required by applicable law or agreed to in writing, software
10
10
  # distributed under the License is distributed on an "AS IS" BASIS,
@@ -1,10 +1,10 @@
1
- # Copyright 2016 Google Inc. All rights reserved.
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
5
5
  # You may obtain a copy of the License at
6
6
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
8
  #
9
9
  # Unless required by applicable law or agreed to in writing, software
10
10
  # distributed under the License is distributed on an "AS IS" BASIS,
@@ -171,6 +171,20 @@ module Google
171
171
  #
172
172
  # If the subscriber never acknowledges the message, the Pub/Sub
173
173
  # system will eventually redeliver the message.
174
+ # @!attribute [rw] retain_acked_messages
175
+ # @return [true, false]
176
+ # Indicates whether to retain acknowledged messages. If true, then
177
+ # messages are not expunged from the subscription's backlog, even if they are
178
+ # acknowledged, until they fall out of the +message_retention_duration+
179
+ # window.
180
+ # @!attribute [rw] message_retention_duration
181
+ # @return [Google::Protobuf::Duration]
182
+ # How long to retain unacknowledged messages in the subscription's backlog,
183
+ # from the moment a message is published.
184
+ # If +retain_acked_messages+ is true, then this also configures the retention
185
+ # of acknowledged messages, and thus configures how far back in time a +Seek+
186
+ # can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10
187
+ # minutes.
174
188
  class Subscription; end
175
189
 
176
190
  # Configuration for a push delivery endpoint.
@@ -186,11 +200,10 @@ module Google
186
200
  # control different aspects of the message delivery.
187
201
  #
188
202
  # The currently supported attribute is +x-goog-version+, which you can
189
- # use to change the format of the push message. This attribute
203
+ # use to change the format of the pushed message. This attribute
190
204
  # indicates the version of the data expected by the endpoint. This
191
- # controls the shape of the envelope (i.e. its fields and metadata).
192
- # The endpoint version is based on the version of the Pub/Sub
193
- # API.
205
+ # controls the shape of the pushed message (i.e., its fields and metadata).
206
+ # The endpoint version is based on the version of the Pub/Sub API.
194
207
  #
195
208
  # If not present during the +CreateSubscription+ call, it will default to
196
209
  # the version of the API used to make such call. If not present during a
@@ -220,6 +233,16 @@ module Google
220
233
  # Format is +projects/{project}/subscriptions/{sub}+.
221
234
  class GetSubscriptionRequest; end
222
235
 
236
+ # Request for the UpdateSubscription method.
237
+ # @!attribute [rw] subscription
238
+ # @return [Google::Pubsub::V1::Subscription]
239
+ # The updated subscription object.
240
+ # @!attribute [rw] update_mask
241
+ # @return [Google::Protobuf::FieldMask]
242
+ # Indicates which fields in the provided subscription to update.
243
+ # Must be specified and non-empty.
244
+ class UpdateSubscriptionRequest; end
245
+
223
246
  # Request for the +ListSubscriptions+ method.
224
247
  # @!attribute [rw] project
225
248
  # @return [String]
@@ -376,6 +399,105 @@ module Google
376
399
  # @return [Array<Google::Pubsub::V1::ReceivedMessage>]
377
400
  # Received Pub/Sub messages. This will not be empty.
378
401
  class StreamingPullResponse; end
402
+
403
+ # Request for the +CreateSnapshot+ method.
404
+ # @!attribute [rw] name
405
+ # @return [String]
406
+ # Optional user-provided name for this snapshot.
407
+ # If the name is not provided in the request, the server will assign a random
408
+ # name for this snapshot on the same project as the subscription.
409
+ # Note that for REST API requests, you must specify a name.
410
+ # Format is +projects/{project}/snapshots/{snap}+.
411
+ # @!attribute [rw] subscription
412
+ # @return [String]
413
+ # The subscription whose backlog the snapshot retains.
414
+ # Specifically, the created snapshot is guaranteed to retain:
415
+ # (a) The existing backlog on the subscription. More precisely, this is
416
+ # defined as the messages in the subscription's backlog that are
417
+ # unacknowledged upon the successful completion of the
418
+ # +CreateSnapshot+ request; as well as:
419
+ # (b) Any messages published to the subscription's topic following the
420
+ # successful completion of the CreateSnapshot request.
421
+ # Format is +projects/{project}/subscriptions/{sub}+.
422
+ class CreateSnapshotRequest; end
423
+
424
+ # A snapshot resource.
425
+ # @!attribute [rw] name
426
+ # @return [String]
427
+ # The name of the snapshot.
428
+ # @!attribute [rw] topic
429
+ # @return [String]
430
+ # The name of the topic from which this snapshot is retaining messages.
431
+ # @!attribute [rw] expiration_time
432
+ # @return [Google::Protobuf::Timestamp]
433
+ # The snapshot is guaranteed to exist up until this time.
434
+ # A newly-created snapshot expires no later than 7 days from the time of its
435
+ # creation. Its exact lifetime is determined at creation by the existing
436
+ # backlog in the source subscription. Specifically, the lifetime of the
437
+ # snapshot is +7 days - (age of oldest unacked message in the subscription)+.
438
+ # For example, consider a subscription whose oldest unacked message is 3 days
439
+ # old. If a snapshot is created from this subscription, the snapshot -- which
440
+ # will always capture this 3-day-old backlog as long as the snapshot
441
+ # exists -- will expire in 4 days.
442
+ class Snapshot; end
443
+
444
+ # Request for the +ListSnapshots+ method.
445
+ # @!attribute [rw] project
446
+ # @return [String]
447
+ # The name of the cloud project that snapshots belong to.
448
+ # Format is +projects/{project}+.
449
+ # @!attribute [rw] page_size
450
+ # @return [Integer]
451
+ # Maximum number of snapshots to return.
452
+ # @!attribute [rw] page_token
453
+ # @return [String]
454
+ # The value returned by the last +ListSnapshotsResponse+; indicates that this
455
+ # is a continuation of a prior +ListSnapshots+ call, and that the system
456
+ # should return the next page of data.
457
+ class ListSnapshotsRequest; end
458
+
459
+ # Response for the +ListSnapshots+ method.
460
+ # @!attribute [rw] snapshots
461
+ # @return [Array<Google::Pubsub::V1::Snapshot>]
462
+ # The resulting snapshots.
463
+ # @!attribute [rw] next_page_token
464
+ # @return [String]
465
+ # If not empty, indicates that there may be more snapshot that match the
466
+ # request; this value should be passed in a new +ListSnapshotsRequest+.
467
+ class ListSnapshotsResponse; end
468
+
469
+ # Request for the +DeleteSnapshot+ method.
470
+ # @!attribute [rw] snapshot
471
+ # @return [String]
472
+ # The name of the snapshot to delete.
473
+ # Format is +projects/{project}/snapshots/{snap}+.
474
+ class DeleteSnapshotRequest; end
475
+
476
+ # Request for the +Seek+ method.
477
+ # @!attribute [rw] subscription
478
+ # @return [String]
479
+ # The subscription to affect.
480
+ # @!attribute [rw] time
481
+ # @return [Google::Protobuf::Timestamp]
482
+ # The time to seek to.
483
+ # Messages retained in the subscription that were published before this
484
+ # time are marked as acknowledged, and messages retained in the
485
+ # subscription that were published after this time are marked as
486
+ # unacknowledged. Note that this operation affects only those messages
487
+ # retained in the subscription (configured by the combination of
488
+ # +message_retention_duration+ and +retain_acked_messages+). For example,
489
+ # if +time+ corresponds to a point before the message retention
490
+ # window (or to a point before the system's notion of the subscription
491
+ # creation time), only retained messages will be marked as unacknowledged,
492
+ # and already-expunged messages will not be restored.
493
+ # @!attribute [rw] snapshot
494
+ # @return [String]
495
+ # The snapshot to seek to. The snapshot's topic must be the same as that of
496
+ # the provided subscription.
497
+ # Format is +projects/{project}/snapshots/{snap}+.
498
+ class SeekRequest; end
499
+
500
+ class SeekResponse; end
379
501
  end
380
502
  end
381
- end
503
+ end
@@ -49,8 +49,6 @@ module Google
49
49
  # The default port of the service.
50
50
  DEFAULT_SERVICE_PORT = 443
51
51
 
52
- CODE_GEN_NAME_VERSION = "gapic/0.1.0".freeze
53
-
54
52
  DEFAULT_TIMEOUT = 30
55
53
 
56
54
  PAGE_DESCRIPTORS = {
@@ -152,10 +150,6 @@ module Google
152
150
  # or the specified config is missing data points.
153
151
  # @param timeout [Numeric]
154
152
  # The default timeout, in seconds, for calls made through this client.
155
- # @param app_name [String]
156
- # The codename of the calling service.
157
- # @param app_version [String]
158
- # The version of the calling service.
159
153
  def initialize \
160
154
  service_path: SERVICE_ADDRESS,
161
155
  port: DEFAULT_SERVICE_PORT,
@@ -164,8 +158,10 @@ module Google
164
158
  scopes: ALL_SCOPES,
165
159
  client_config: {},
166
160
  timeout: DEFAULT_TIMEOUT,
167
- app_name: "gax",
168
- app_version: Google::Gax::VERSION
161
+ app_name: nil,
162
+ app_version: nil,
163
+ lib_name: nil,
164
+ lib_version: ""
169
165
  # These require statements are intentionally placed here to initialize
170
166
  # the gRPC module only when it's required.
171
167
  # See https://github.com/googleapis/toolkit/issues/446
@@ -174,9 +170,16 @@ module Google
174
170
  require "google/pubsub/v1/pubsub_services_pb"
175
171
 
176
172
 
177
- google_api_client = "#{app_name}/#{app_version} " \
178
- "#{CODE_GEN_NAME_VERSION} gax/#{Google::Gax::VERSION} " \
179
- "ruby/#{RUBY_VERSION}".freeze
173
+ if app_name || app_version
174
+ warn "`app_name` and `app_version` are no longer being used in the request headers."
175
+ end
176
+
177
+ google_api_client = "gl-ruby/#{RUBY_VERSION}"
178
+ google_api_client << " #{lib_name}/#{lib_version}" if lib_name
179
+ google_api_client << " gapic/ gax/#{Google::Gax::VERSION}"
180
+ google_api_client << " grpc/#{GRPC::VERSION}"
181
+ google_api_client.freeze
182
+
180
183
  headers = { :"x-goog-api-client" => google_api_client }
181
184
  client_config_file = Pathname.new(__dir__).join(
182
185
  "publisher_client_config.json"
@@ -2,15 +2,15 @@
2
2
  "interfaces": {
3
3
  "google.pubsub.v1.Publisher": {
4
4
  "retry_codes": {
5
- "idempotent": [
6
- "DEADLINE_EXCEEDED",
7
- "UNAVAILABLE"
8
- ],
9
- "one_plus_delivery": [
10
- "DEADLINE_EXCEEDED",
11
- "UNAVAILABLE"
12
- ],
13
- "non_idempotent": []
5
+ "idempotent": [
6
+ "DEADLINE_EXCEEDED",
7
+ "UNAVAILABLE"
8
+ ],
9
+ "one_plus_delivery": [
10
+ "DEADLINE_EXCEEDED",
11
+ "UNAVAILABLE"
12
+ ],
13
+ "non_idempotent": []
14
14
  },
15
15
  "retry_params": {
16
16
  "default": {
@@ -49,15 +49,17 @@ module Google
49
49
  # The default port of the service.
50
50
  DEFAULT_SERVICE_PORT = 443
51
51
 
52
- CODE_GEN_NAME_VERSION = "gapic/0.1.0".freeze
53
-
54
52
  DEFAULT_TIMEOUT = 30
55
53
 
56
54
  PAGE_DESCRIPTORS = {
57
55
  "list_subscriptions" => Google::Gax::PageDescriptor.new(
58
56
  "page_token",
59
57
  "next_page_token",
60
- "subscriptions")
58
+ "subscriptions"),
59
+ "list_snapshots" => Google::Gax::PageDescriptor.new(
60
+ "page_token",
61
+ "next_page_token",
62
+ "snapshots")
61
63
  }.freeze
62
64
 
63
65
  private_constant :PAGE_DESCRIPTORS
@@ -75,6 +77,12 @@ module Google
75
77
 
76
78
  private_constant :PROJECT_PATH_TEMPLATE
77
79
 
80
+ SNAPSHOT_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
81
+ "projects/{project}/snapshots/{snapshot}"
82
+ )
83
+
84
+ private_constant :SNAPSHOT_PATH_TEMPLATE
85
+
78
86
  SUBSCRIPTION_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
79
87
  "projects/{project}/subscriptions/{subscription}"
80
88
  )
@@ -96,6 +104,17 @@ module Google
96
104
  )
97
105
  end
98
106
 
107
+ # Returns a fully-qualified snapshot resource name string.
108
+ # @param project [String]
109
+ # @param snapshot [String]
110
+ # @return [String]
111
+ def self.snapshot_path project, snapshot
112
+ SNAPSHOT_PATH_TEMPLATE.render(
113
+ :"project" => project,
114
+ :"snapshot" => snapshot
115
+ )
116
+ end
117
+
99
118
  # Returns a fully-qualified subscription resource name string.
100
119
  # @param project [String]
101
120
  # @param subscription [String]
@@ -125,6 +144,20 @@ module Google
125
144
  PROJECT_PATH_TEMPLATE.match(project_name)["project"]
126
145
  end
127
146
 
147
+ # Parses the project from a snapshot resource.
148
+ # @param snapshot_name [String]
149
+ # @return [String]
150
+ def self.match_project_from_snapshot_name snapshot_name
151
+ SNAPSHOT_PATH_TEMPLATE.match(snapshot_name)["project"]
152
+ end
153
+
154
+ # Parses the snapshot from a snapshot resource.
155
+ # @param snapshot_name [String]
156
+ # @return [String]
157
+ def self.match_snapshot_from_snapshot_name snapshot_name
158
+ SNAPSHOT_PATH_TEMPLATE.match(snapshot_name)["snapshot"]
159
+ end
160
+
128
161
  # Parses the project from a subscription resource.
129
162
  # @param subscription_name [String]
130
163
  # @return [String]
@@ -168,10 +201,6 @@ module Google
168
201
  # or the specified config is missing data points.
169
202
  # @param timeout [Numeric]
170
203
  # The default timeout, in seconds, for calls made through this client.
171
- # @param app_name [String]
172
- # The codename of the calling service.
173
- # @param app_version [String]
174
- # The version of the calling service.
175
204
  def initialize \
176
205
  service_path: SERVICE_ADDRESS,
177
206
  port: DEFAULT_SERVICE_PORT,
@@ -180,8 +209,10 @@ module Google
180
209
  scopes: ALL_SCOPES,
181
210
  client_config: {},
182
211
  timeout: DEFAULT_TIMEOUT,
183
- app_name: "gax",
184
- app_version: Google::Gax::VERSION
212
+ app_name: nil,
213
+ app_version: nil,
214
+ lib_name: nil,
215
+ lib_version: ""
185
216
  # These require statements are intentionally placed here to initialize
186
217
  # the gRPC module only when it's required.
187
218
  # See https://github.com/googleapis/toolkit/issues/446
@@ -190,9 +221,16 @@ module Google
190
221
  require "google/pubsub/v1/pubsub_services_pb"
191
222
 
192
223
 
193
- google_api_client = "#{app_name}/#{app_version} " \
194
- "#{CODE_GEN_NAME_VERSION} gax/#{Google::Gax::VERSION} " \
195
- "ruby/#{RUBY_VERSION}".freeze
224
+ if app_name || app_version
225
+ warn "`app_name` and `app_version` are no longer being used in the request headers."
226
+ end
227
+
228
+ google_api_client = "gl-ruby/#{RUBY_VERSION}"
229
+ google_api_client << " #{lib_name}/#{lib_version}" if lib_name
230
+ google_api_client << " gapic/ gax/#{Google::Gax::VERSION}"
231
+ google_api_client << " grpc/#{GRPC::VERSION}"
232
+ google_api_client.freeze
233
+
196
234
  headers = { :"x-goog-api-client" => google_api_client }
197
235
  client_config_file = Pathname.new(__dir__).join(
198
236
  "subscriber_client_config.json"
@@ -246,6 +284,10 @@ module Google
246
284
  @subscriber_stub.method(:get_subscription),
247
285
  defaults["get_subscription"]
248
286
  )
287
+ @update_subscription = Google::Gax.create_api_call(
288
+ @subscriber_stub.method(:update_subscription),
289
+ defaults["update_subscription"]
290
+ )
249
291
  @list_subscriptions = Google::Gax.create_api_call(
250
292
  @subscriber_stub.method(:list_subscriptions),
251
293
  defaults["list_subscriptions"]
@@ -274,6 +316,22 @@ module Google
274
316
  @subscriber_stub.method(:modify_push_config),
275
317
  defaults["modify_push_config"]
276
318
  )
319
+ @list_snapshots = Google::Gax.create_api_call(
320
+ @subscriber_stub.method(:list_snapshots),
321
+ defaults["list_snapshots"]
322
+ )
323
+ @create_snapshot = Google::Gax.create_api_call(
324
+ @subscriber_stub.method(:create_snapshot),
325
+ defaults["create_snapshot"]
326
+ )
327
+ @delete_snapshot = Google::Gax.create_api_call(
328
+ @subscriber_stub.method(:delete_snapshot),
329
+ defaults["delete_snapshot"]
330
+ )
331
+ @seek = Google::Gax.create_api_call(
332
+ @subscriber_stub.method(:seek),
333
+ defaults["seek"]
334
+ )
277
335
  end
278
336
 
279
337
  # Service calls
@@ -325,6 +383,18 @@ module Google
325
383
  #
326
384
  # If the subscriber never acknowledges the message, the Pub/Sub
327
385
  # system will eventually redeliver the message.
386
+ # @param retain_acked_messages [true, false]
387
+ # Indicates whether to retain acknowledged messages. If true, then
388
+ # messages are not expunged from the subscription's backlog, even if they are
389
+ # acknowledged, until they fall out of the +message_retention_duration+
390
+ # window.
391
+ # @param message_retention_duration [Google::Protobuf::Duration]
392
+ # How long to retain unacknowledged messages in the subscription's backlog,
393
+ # from the moment a message is published.
394
+ # If +retain_acked_messages+ is true, then this also configures the retention
395
+ # of acknowledged messages, and thus configures how far back in time a +Seek+
396
+ # can be done. Defaults to 7 days. Cannot be more than 7 days or less than 10
397
+ # minutes.
328
398
  # @param options [Google::Gax::CallOptions]
329
399
  # Overrides the default settings for this call, e.g, timeout,
330
400
  # retries, etc.
@@ -345,12 +415,16 @@ module Google
345
415
  topic,
346
416
  push_config: nil,
347
417
  ack_deadline_seconds: nil,
418
+ retain_acked_messages: nil,
419
+ message_retention_duration: nil,
348
420
  options: nil
349
421
  req = Google::Pubsub::V1::Subscription.new({
350
422
  name: name,
351
423
  topic: topic,
352
424
  push_config: push_config,
353
- ack_deadline_seconds: ack_deadline_seconds
425
+ ack_deadline_seconds: ack_deadline_seconds,
426
+ retain_acked_messages: retain_acked_messages,
427
+ message_retention_duration: message_retention_duration
354
428
  }.delete_if { |_, v| v.nil? })
355
429
  @create_subscription.call(req, options)
356
430
  end
@@ -383,6 +457,42 @@ module Google
383
457
  @get_subscription.call(req, options)
384
458
  end
385
459
 
460
+ # Updates an existing subscription. Note that certain properties of a
461
+ # subscription, such as its topic, are not modifiable.
462
+ #
463
+ # @param subscription [Google::Pubsub::V1::Subscription]
464
+ # The updated subscription object.
465
+ # @param update_mask [Google::Protobuf::FieldMask]
466
+ # Indicates which fields in the provided subscription to update.
467
+ # Must be specified and non-empty.
468
+ # @param options [Google::Gax::CallOptions]
469
+ # Overrides the default settings for this call, e.g, timeout,
470
+ # retries, etc.
471
+ # @return [Google::Pubsub::V1::Subscription]
472
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
473
+ # @example
474
+ # require "google/cloud/pubsub/v1/subscriber_client"
475
+ #
476
+ # FieldMask = Google::Protobuf::FieldMask
477
+ # SubscriberClient = Google::Cloud::Pubsub::V1::SubscriberClient
478
+ # Subscription = Google::Pubsub::V1::Subscription
479
+ #
480
+ # subscriber_client = SubscriberClient.new
481
+ # subscription = Subscription.new
482
+ # update_mask = FieldMask.new
483
+ # response = subscriber_client.update_subscription(subscription, update_mask)
484
+
485
+ def update_subscription \
486
+ subscription,
487
+ update_mask,
488
+ options: nil
489
+ req = Google::Pubsub::V1::UpdateSubscriptionRequest.new({
490
+ subscription: subscription,
491
+ update_mask: update_mask
492
+ }.delete_if { |_, v| v.nil? })
493
+ @update_subscription.call(req, options)
494
+ end
495
+
386
496
  # Lists matching subscriptions.
387
497
  #
388
498
  # @param project [String]
@@ -694,6 +804,190 @@ module Google
694
804
  nil
695
805
  end
696
806
 
807
+ # Lists the existing snapshots.
808
+ #
809
+ # @param project [String]
810
+ # The name of the cloud project that snapshots belong to.
811
+ # Format is +projects/{project}+.
812
+ # @param page_size [Integer]
813
+ # The maximum number of resources contained in the underlying API
814
+ # response. If page streaming is performed per-resource, this
815
+ # parameter does not affect the return value. If page streaming is
816
+ # performed per-page, this determines the maximum number of
817
+ # resources in a page.
818
+ # @param options [Google::Gax::CallOptions]
819
+ # Overrides the default settings for this call, e.g, timeout,
820
+ # retries, etc.
821
+ # @return [Google::Gax::PagedEnumerable<Google::Pubsub::V1::Snapshot>]
822
+ # An enumerable of Google::Pubsub::V1::Snapshot instances.
823
+ # See Google::Gax::PagedEnumerable documentation for other
824
+ # operations such as per-page iteration or access to the response
825
+ # object.
826
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
827
+ # @example
828
+ # require "google/cloud/pubsub/v1/subscriber_client"
829
+ #
830
+ # SubscriberClient = Google::Cloud::Pubsub::V1::SubscriberClient
831
+ #
832
+ # subscriber_client = SubscriberClient.new
833
+ # formatted_project = SubscriberClient.project_path("[PROJECT]")
834
+ #
835
+ # # Iterate over all results.
836
+ # subscriber_client.list_snapshots(formatted_project).each do |element|
837
+ # # Process element.
838
+ # end
839
+ #
840
+ # # Or iterate over results one page at a time.
841
+ # subscriber_client.list_snapshots(formatted_project).each_page do |page|
842
+ # # Process each page at a time.
843
+ # page.each do |element|
844
+ # # Process element.
845
+ # end
846
+ # end
847
+
848
+ def list_snapshots \
849
+ project,
850
+ page_size: nil,
851
+ options: nil
852
+ req = Google::Pubsub::V1::ListSnapshotsRequest.new({
853
+ project: project,
854
+ page_size: page_size
855
+ }.delete_if { |_, v| v.nil? })
856
+ @list_snapshots.call(req, options)
857
+ end
858
+
859
+ # Creates a snapshot from the requested subscription.
860
+ # If the snapshot already exists, returns +ALREADY_EXISTS+.
861
+ # If the requested subscription doesn't exist, returns +NOT_FOUND+.
862
+ #
863
+ # If the name is not provided in the request, the server will assign a random
864
+ # name for this snapshot on the same project as the subscription, conforming
865
+ # to the
866
+ # {resource name format}[https://cloud.google.com/pubsub/docs/overview#names].
867
+ # The generated name is populated in the returned Snapshot object.
868
+ # Note that for REST API requests, you must specify a name in the request.
869
+ #
870
+ # @param name [String]
871
+ # Optional user-provided name for this snapshot.
872
+ # If the name is not provided in the request, the server will assign a random
873
+ # name for this snapshot on the same project as the subscription.
874
+ # Note that for REST API requests, you must specify a name.
875
+ # Format is +projects/{project}/snapshots/{snap}+.
876
+ # @param subscription [String]
877
+ # The subscription whose backlog the snapshot retains.
878
+ # Specifically, the created snapshot is guaranteed to retain:
879
+ # (a) The existing backlog on the subscription. More precisely, this is
880
+ # defined as the messages in the subscription's backlog that are
881
+ # unacknowledged upon the successful completion of the
882
+ # +CreateSnapshot+ request; as well as:
883
+ # (b) Any messages published to the subscription's topic following the
884
+ # successful completion of the CreateSnapshot request.
885
+ # Format is +projects/{project}/subscriptions/{sub}+.
886
+ # @param options [Google::Gax::CallOptions]
887
+ # Overrides the default settings for this call, e.g, timeout,
888
+ # retries, etc.
889
+ # @return [Google::Pubsub::V1::Snapshot]
890
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
891
+ # @example
892
+ # require "google/cloud/pubsub/v1/subscriber_client"
893
+ #
894
+ # SubscriberClient = Google::Cloud::Pubsub::V1::SubscriberClient
895
+ #
896
+ # subscriber_client = SubscriberClient.new
897
+ # formatted_name = SubscriberClient.snapshot_path("[PROJECT]", "[SNAPSHOT]")
898
+ # formatted_subscription = SubscriberClient.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
899
+ # response = subscriber_client.create_snapshot(formatted_name, formatted_subscription)
900
+
901
+ def create_snapshot \
902
+ name,
903
+ subscription,
904
+ options: nil
905
+ req = Google::Pubsub::V1::CreateSnapshotRequest.new({
906
+ name: name,
907
+ subscription: subscription
908
+ }.delete_if { |_, v| v.nil? })
909
+ @create_snapshot.call(req, options)
910
+ end
911
+
912
+ # Removes an existing snapshot. All messages retained in the snapshot
913
+ # are immediately dropped. After a snapshot is deleted, a new one may be
914
+ # created with the same name, but the new one has no association with the old
915
+ # snapshot or its subscription, unless the same subscription is specified.
916
+ #
917
+ # @param snapshot [String]
918
+ # The name of the snapshot to delete.
919
+ # Format is +projects/{project}/snapshots/{snap}+.
920
+ # @param options [Google::Gax::CallOptions]
921
+ # Overrides the default settings for this call, e.g, timeout,
922
+ # retries, etc.
923
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
924
+ # @example
925
+ # require "google/cloud/pubsub/v1/subscriber_client"
926
+ #
927
+ # SubscriberClient = Google::Cloud::Pubsub::V1::SubscriberClient
928
+ #
929
+ # subscriber_client = SubscriberClient.new
930
+ # formatted_snapshot = SubscriberClient.snapshot_path("[PROJECT]", "[SNAPSHOT]")
931
+ # subscriber_client.delete_snapshot(formatted_snapshot)
932
+
933
+ def delete_snapshot \
934
+ snapshot,
935
+ options: nil
936
+ req = Google::Pubsub::V1::DeleteSnapshotRequest.new({
937
+ snapshot: snapshot
938
+ }.delete_if { |_, v| v.nil? })
939
+ @delete_snapshot.call(req, options)
940
+ nil
941
+ end
942
+
943
+ # Seeks an existing subscription to a point in time or to a given snapshot,
944
+ # whichever is provided in the request.
945
+ #
946
+ # @param subscription [String]
947
+ # The subscription to affect.
948
+ # @param time [Google::Protobuf::Timestamp]
949
+ # The time to seek to.
950
+ # Messages retained in the subscription that were published before this
951
+ # time are marked as acknowledged, and messages retained in the
952
+ # subscription that were published after this time are marked as
953
+ # unacknowledged. Note that this operation affects only those messages
954
+ # retained in the subscription (configured by the combination of
955
+ # +message_retention_duration+ and +retain_acked_messages+). For example,
956
+ # if +time+ corresponds to a point before the message retention
957
+ # window (or to a point before the system's notion of the subscription
958
+ # creation time), only retained messages will be marked as unacknowledged,
959
+ # and already-expunged messages will not be restored.
960
+ # @param snapshot [String]
961
+ # The snapshot to seek to. The snapshot's topic must be the same as that of
962
+ # the provided subscription.
963
+ # Format is +projects/{project}/snapshots/{snap}+.
964
+ # @param options [Google::Gax::CallOptions]
965
+ # Overrides the default settings for this call, e.g, timeout,
966
+ # retries, etc.
967
+ # @return [Google::Pubsub::V1::SeekResponse]
968
+ # @raise [Google::Gax::GaxError] if the RPC is aborted.
969
+ # @example
970
+ # require "google/cloud/pubsub/v1/subscriber_client"
971
+ #
972
+ # SubscriberClient = Google::Cloud::Pubsub::V1::SubscriberClient
973
+ #
974
+ # subscriber_client = SubscriberClient.new
975
+ # formatted_subscription = SubscriberClient.subscription_path("[PROJECT]", "[SUBSCRIPTION]")
976
+ # response = subscriber_client.seek(formatted_subscription)
977
+
978
+ def seek \
979
+ subscription,
980
+ time: nil,
981
+ snapshot: nil,
982
+ options: nil
983
+ req = Google::Pubsub::V1::SeekRequest.new({
984
+ subscription: subscription,
985
+ time: time,
986
+ snapshot: snapshot
987
+ }.delete_if { |_, v| v.nil? })
988
+ @seek.call(req, options)
989
+ end
990
+
697
991
  # Sets the access control policy on the specified resource. Replaces any
698
992
  # existing policy.
699
993
  #
@@ -2,11 +2,11 @@
2
2
  "interfaces": {
3
3
  "google.pubsub.v1.Subscriber": {
4
4
  "retry_codes": {
5
- "idempotent": [
6
- "DEADLINE_EXCEEDED",
7
- "UNAVAILABLE"
8
- ],
9
- "non_idempotent": []
5
+ "idempotent": [
6
+ "DEADLINE_EXCEEDED",
7
+ "UNAVAILABLE"
8
+ ],
9
+ "non_idempotent": []
10
10
  },
11
11
  "retry_params": {
12
12
  "default": {
@@ -39,6 +39,11 @@
39
39
  "retry_codes_name": "idempotent",
40
40
  "retry_params_name": "default"
41
41
  },
42
+ "UpdateSubscription": {
43
+ "timeout_millis": 60000,
44
+ "retry_codes_name": "idempotent",
45
+ "retry_params_name": "default"
46
+ },
42
47
  "ListSubscriptions": {
43
48
  "timeout_millis": 60000,
44
49
  "retry_codes_name": "idempotent",
@@ -74,6 +79,26 @@
74
79
  "retry_codes_name": "non_idempotent",
75
80
  "retry_params_name": "default"
76
81
  },
82
+ "ListSnapshots": {
83
+ "timeout_millis": 60000,
84
+ "retry_codes_name": "idempotent",
85
+ "retry_params_name": "default"
86
+ },
87
+ "CreateSnapshot": {
88
+ "timeout_millis": 60000,
89
+ "retry_codes_name": "idempotent",
90
+ "retry_params_name": "default"
91
+ },
92
+ "DeleteSnapshot": {
93
+ "timeout_millis": 60000,
94
+ "retry_codes_name": "idempotent",
95
+ "retry_params_name": "default"
96
+ },
97
+ "Seek": {
98
+ "timeout_millis": 60000,
99
+ "retry_codes_name": "non_idempotent",
100
+ "retry_params_name": "default"
101
+ },
77
102
  "SetIamPolicy": {
78
103
  "timeout_millis": 60000,
79
104
  "retry_codes_name": "non_idempotent",
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Pubsub
19
- VERSION = "0.23.0"
19
+ VERSION = "0.23.1"
20
20
  end
21
21
  end
22
22
  end
@@ -4,7 +4,9 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  require 'google/api/annotations_pb'
7
+ require 'google/protobuf/duration_pb'
7
8
  require 'google/protobuf/empty_pb'
9
+ require 'google/protobuf/field_mask_pb'
8
10
  require 'google/protobuf/timestamp_pb'
9
11
  Google::Protobuf::DescriptorPool.generated_pool.build do
10
12
  add_message "google.pubsub.v1.Topic" do
@@ -52,6 +54,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
52
54
  optional :topic, :string, 2
53
55
  optional :push_config, :message, 4, "google.pubsub.v1.PushConfig"
54
56
  optional :ack_deadline_seconds, :int32, 5
57
+ optional :retain_acked_messages, :bool, 7
58
+ optional :message_retention_duration, :message, 8, "google.protobuf.Duration"
55
59
  end
56
60
  add_message "google.pubsub.v1.PushConfig" do
57
61
  optional :push_endpoint, :string, 1
@@ -64,6 +68,10 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
64
68
  add_message "google.pubsub.v1.GetSubscriptionRequest" do
65
69
  optional :subscription, :string, 1
66
70
  end
71
+ add_message "google.pubsub.v1.UpdateSubscriptionRequest" do
72
+ optional :subscription, :message, 1, "google.pubsub.v1.Subscription"
73
+ optional :update_mask, :message, 2, "google.protobuf.FieldMask"
74
+ end
67
75
  add_message "google.pubsub.v1.ListSubscriptionsRequest" do
68
76
  optional :project, :string, 1
69
77
  optional :page_size, :int32, 2
@@ -107,6 +115,36 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
107
115
  add_message "google.pubsub.v1.StreamingPullResponse" do
108
116
  repeated :received_messages, :message, 1, "google.pubsub.v1.ReceivedMessage"
109
117
  end
118
+ add_message "google.pubsub.v1.CreateSnapshotRequest" do
119
+ optional :name, :string, 1
120
+ optional :subscription, :string, 2
121
+ end
122
+ add_message "google.pubsub.v1.Snapshot" do
123
+ optional :name, :string, 1
124
+ optional :topic, :string, 2
125
+ optional :expiration_time, :message, 3, "google.protobuf.Timestamp"
126
+ end
127
+ add_message "google.pubsub.v1.ListSnapshotsRequest" do
128
+ optional :project, :string, 1
129
+ optional :page_size, :int32, 2
130
+ optional :page_token, :string, 3
131
+ end
132
+ add_message "google.pubsub.v1.ListSnapshotsResponse" do
133
+ repeated :snapshots, :message, 1, "google.pubsub.v1.Snapshot"
134
+ optional :next_page_token, :string, 2
135
+ end
136
+ add_message "google.pubsub.v1.DeleteSnapshotRequest" do
137
+ optional :snapshot, :string, 1
138
+ end
139
+ add_message "google.pubsub.v1.SeekRequest" do
140
+ optional :subscription, :string, 1
141
+ oneof :target do
142
+ optional :time, :message, 2, "google.protobuf.Timestamp"
143
+ optional :snapshot, :string, 3
144
+ end
145
+ end
146
+ add_message "google.pubsub.v1.SeekResponse" do
147
+ end
110
148
  end
111
149
 
112
150
  module Google
@@ -126,6 +164,7 @@ module Google
126
164
  PushConfig = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.PushConfig").msgclass
127
165
  ReceivedMessage = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.ReceivedMessage").msgclass
128
166
  GetSubscriptionRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.GetSubscriptionRequest").msgclass
167
+ UpdateSubscriptionRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.UpdateSubscriptionRequest").msgclass
129
168
  ListSubscriptionsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.ListSubscriptionsRequest").msgclass
130
169
  ListSubscriptionsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.ListSubscriptionsResponse").msgclass
131
170
  DeleteSubscriptionRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.DeleteSubscriptionRequest").msgclass
@@ -136,6 +175,13 @@ module Google
136
175
  AcknowledgeRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.AcknowledgeRequest").msgclass
137
176
  StreamingPullRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.StreamingPullRequest").msgclass
138
177
  StreamingPullResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.StreamingPullResponse").msgclass
178
+ CreateSnapshotRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.CreateSnapshotRequest").msgclass
179
+ Snapshot = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.Snapshot").msgclass
180
+ ListSnapshotsRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.ListSnapshotsRequest").msgclass
181
+ ListSnapshotsResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.ListSnapshotsResponse").msgclass
182
+ DeleteSnapshotRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.DeleteSnapshotRequest").msgclass
183
+ SeekRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.SeekRequest").msgclass
184
+ SeekResponse = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.pubsub.v1.SeekResponse").msgclass
139
185
  end
140
186
  end
141
187
  end
@@ -1,7 +1,7 @@
1
1
  # Generated by the protocol buffer compiler. DO NOT EDIT!
2
2
  # Source: google/pubsub/v1/pubsub.proto for package 'google.pubsub.v1'
3
3
  # Original file comments:
4
- # Copyright 2016 Google Inc.
4
+ # Copyright 2017 Google Inc.
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -46,6 +46,9 @@ module Google
46
46
  rpc :CreateSubscription, Subscription, Subscription
47
47
  # Gets the configuration details of a subscription.
48
48
  rpc :GetSubscription, GetSubscriptionRequest, Subscription
49
+ # Updates an existing subscription. Note that certain properties of a
50
+ # subscription, such as its topic, are not modifiable.
51
+ rpc :UpdateSubscription, UpdateSubscriptionRequest, Subscription
49
52
  # Lists matching subscriptions.
50
53
  rpc :ListSubscriptions, ListSubscriptionsRequest, ListSubscriptionsResponse
51
54
  # Deletes an existing subscription. All messages retained in the subscription
@@ -93,6 +96,27 @@ module Google
93
96
  # attributes of a push subscription. Messages will accumulate for delivery
94
97
  # continuously through the call regardless of changes to the `PushConfig`.
95
98
  rpc :ModifyPushConfig, ModifyPushConfigRequest, Google::Protobuf::Empty
99
+ # Lists the existing snapshots.
100
+ rpc :ListSnapshots, ListSnapshotsRequest, ListSnapshotsResponse
101
+ # Creates a snapshot from the requested subscription.
102
+ # If the snapshot already exists, returns `ALREADY_EXISTS`.
103
+ # If the requested subscription doesn't exist, returns `NOT_FOUND`.
104
+ #
105
+ # If the name is not provided in the request, the server will assign a random
106
+ # name for this snapshot on the same project as the subscription, conforming
107
+ # to the
108
+ # [resource name format](https://cloud.google.com/pubsub/docs/overview#names).
109
+ # The generated name is populated in the returned Snapshot object.
110
+ # Note that for REST API requests, you must specify a name in the request.
111
+ rpc :CreateSnapshot, CreateSnapshotRequest, Snapshot
112
+ # Removes an existing snapshot. All messages retained in the snapshot
113
+ # are immediately dropped. After a snapshot is deleted, a new one may be
114
+ # created with the same name, but the new one has no association with the old
115
+ # snapshot or its subscription, unless the same subscription is specified.
116
+ rpc :DeleteSnapshot, DeleteSnapshotRequest, Google::Protobuf::Empty
117
+ # Seeks an existing subscription to a point in time or to a given snapshot,
118
+ # whichever is provided in the request.
119
+ rpc :Seek, SeekRequest, SeekResponse
96
120
  end
97
121
 
98
122
  Stub = Service.rpc_stub_class
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-pubsub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.23.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-02-21 00:00:00.000000000 Z
12
+ date: 2017-03-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-cloud-core
@@ -204,6 +204,8 @@ files:
204
204
  - lib/google/cloud/pubsub/topic/list.rb
205
205
  - lib/google/cloud/pubsub/topic/publisher.rb
206
206
  - lib/google/cloud/pubsub/v1.rb
207
+ - lib/google/cloud/pubsub/v1/doc/google/protobuf/duration.rb
208
+ - lib/google/cloud/pubsub/v1/doc/google/protobuf/field_mask.rb
207
209
  - lib/google/cloud/pubsub/v1/doc/google/protobuf/timestamp.rb
208
210
  - lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb
209
211
  - lib/google/cloud/pubsub/v1/publisher_client.rb