gapic-common 0.10.0 → 0.15.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/CHANGELOG.md +50 -0
- data/lib/gapic/call_options/error_codes.rb +71 -0
- data/lib/gapic/call_options/retry_policy.rb +20 -28
- data/lib/gapic/call_options.rb +33 -0
- data/lib/gapic/common/version.rb +1 -1
- data/lib/gapic/generic_lro/operation.rb +2 -1
- data/lib/gapic/grpc/errors.rb +60 -0
- data/lib/gapic/grpc/service_stub/rpc_call.rb +17 -6
- data/lib/gapic/grpc/service_stub.rb +15 -15
- data/lib/gapic/grpc.rb +1 -0
- data/lib/gapic/headers.rb +5 -3
- data/lib/gapic/paged_enumerable.rb +3 -3
- data/lib/gapic/rest/client_stub.rb +85 -16
- data/lib/gapic/rest/error.rb +74 -11
- data/lib/gapic/rest/faraday_middleware.rb +25 -4
- data/lib/gapic/rest/grpc_transcoder/http_binding.rb +54 -1
- data/lib/gapic/rest/grpc_transcoder.rb +18 -44
- data/lib/gapic/rest/server_stream.rb +101 -0
- data/lib/gapic/rest/threaded_enumerator.rb +72 -0
- data/lib/gapic/rest.rb +2 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5902b53f0f5a46b4682ff855fb89a6a3162af38523fa273f273abeeeed0d3a3d
|
4
|
+
data.tar.gz: a1e9bb69d31725768f00b152efcaf29042657fbb304c2ba2f25de485831fe187
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84d77cc3d943714b8a3578ecabf3fea3a321dfe0929ee108233d4dcd8fede90a37be21a81e121142739aa3dca102ffff0826a003906bec16f03749beddf59ab2
|
7
|
+
data.tar.gz: 27e2815be724399a4c01ca1d47c7b2e9291ee4583018251f45a2a0162f1d5cd8298d0ca3b8a4cf90fc4ba6f2e410240439e61a22a66fbeae89c5a3e9dc223879
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,55 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 0.15.0 (2022-11-17)
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* retry policy now works for REST calls
|
8
|
+
|
9
|
+
### 0.14.0 (2022-11-08)
|
10
|
+
|
11
|
+
#### Features
|
12
|
+
|
13
|
+
* add support for different types of credentials to REST
|
14
|
+
#### Bug Fixes
|
15
|
+
|
16
|
+
* deadlock fix ([#845](https://github.com/googleapis/gapic-generator-ruby/issues/845))
|
17
|
+
|
18
|
+
### 0.13.0 (2022-10-26)
|
19
|
+
|
20
|
+
#### Features
|
21
|
+
|
22
|
+
* Implement server-side streaming support for REST calls in gapic-common ([#826](https://github.com/googleapis/gapic-generator-ruby/issues/826))
|
23
|
+
|
24
|
+
### 0.12.0 (2022-09-15)
|
25
|
+
|
26
|
+
#### Features
|
27
|
+
|
28
|
+
* Support numeric_enums in the ClientStub ([#817](https://github.com/googleapis/gapic-generator-ruby/issues/817))
|
29
|
+
* parse details information from REST errors ([#815](https://github.com/googleapis/gapic-generator-ruby/issues/815))
|
30
|
+
* send protobuf version in headers ([#816](https://github.com/googleapis/gapic-generator-ruby/issues/816))
|
31
|
+
|
32
|
+
#### Bug Fixes
|
33
|
+
|
34
|
+
* rewrap certain grpc errors ([#810](https://github.com/googleapis/gapic-generator-ruby/issues/810))
|
35
|
+
This will rewrap some GRPC::Unavailable errors that were caused by authentication failing as Gapic::GRPC::AuthorizationError which inherits from ::GRPC::Unauthenticated
|
36
|
+
|
37
|
+
### 0.11.1 (2022-08-03)
|
38
|
+
|
39
|
+
#### Bug Fixes
|
40
|
+
|
41
|
+
* error code of 0 is not an error, body template field can be nil ([#805](https://github.com/googleapis/gapic-generator-ruby/issues/805))
|
42
|
+
|
43
|
+
### 0.11.0 (2022-07-27)
|
44
|
+
|
45
|
+
#### Features
|
46
|
+
|
47
|
+
* Add CallOptions#merge and CallOptions equality checking ([#802](https://github.com/googleapis/gapic-generator-ruby/issues/802))
|
48
|
+
|
49
|
+
#### Bug Fixes
|
50
|
+
|
51
|
+
* transcoder should always preserve slashes ([#795](https://github.com/googleapis/gapic-generator-ruby/issues/795))
|
52
|
+
|
3
53
|
### 0.10.0 (2022-06-20)
|
4
54
|
|
5
55
|
#### Features
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# Copyright 2019 Google LLC
|
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
|
+
# https://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 Gapic
|
16
|
+
class CallOptions
|
17
|
+
##
|
18
|
+
# @private
|
19
|
+
# The gRPC error codes and their HTTP mapping
|
20
|
+
#
|
21
|
+
module ErrorCodes
|
22
|
+
# @private
|
23
|
+
# See https://grpc.github.io/grpc/core/md_doc_statuscodes.html for a
|
24
|
+
# list of error codes.
|
25
|
+
error_code_mapping = [
|
26
|
+
"OK",
|
27
|
+
"CANCELLED",
|
28
|
+
"UNKNOWN",
|
29
|
+
"INVALID_ARGUMENT",
|
30
|
+
"DEADLINE_EXCEEDED",
|
31
|
+
"NOT_FOUND",
|
32
|
+
"ALREADY_EXISTS",
|
33
|
+
"PERMISSION_DENIED",
|
34
|
+
"RESOURCE_EXHAUSTED",
|
35
|
+
"FAILED_PRECONDITION",
|
36
|
+
"ABORTED",
|
37
|
+
"OUT_OF_RANGE",
|
38
|
+
"UNIMPLEMENTED",
|
39
|
+
"INTERNAL",
|
40
|
+
"UNAVAILABLE",
|
41
|
+
"DATA_LOSS",
|
42
|
+
"UNAUTHENTICATED"
|
43
|
+
].freeze
|
44
|
+
|
45
|
+
# @private
|
46
|
+
ERROR_STRING_MAPPING = error_code_mapping.each_with_index.to_h.freeze
|
47
|
+
|
48
|
+
# @private
|
49
|
+
# Converts http error codes into corresponding gRPC ones
|
50
|
+
def self.grpc_error_for http_error_code
|
51
|
+
return 2 unless http_error_code
|
52
|
+
|
53
|
+
# The http status codes mapped to their error classes.
|
54
|
+
{
|
55
|
+
400 => 3, # InvalidArgumentError
|
56
|
+
401 => 16, # UnauthenticatedError
|
57
|
+
403 => 7, # PermissionDeniedError
|
58
|
+
404 => 5, # NotFoundError
|
59
|
+
409 => 6, # AlreadyExistsError
|
60
|
+
412 => 9, # FailedPreconditionError
|
61
|
+
429 => 8, # ResourceExhaustedError
|
62
|
+
499 => 1, # CanceledError
|
63
|
+
500 => 13, # InternalError
|
64
|
+
501 => 12, # UnimplementedError
|
65
|
+
503 => 14, # UnavailableError
|
66
|
+
504 => 4 # DeadlineExceededError
|
67
|
+
}[http_error_code] || 2 # UnknownError
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -12,6 +12,8 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
require "gapic/call_options/error_codes"
|
16
|
+
|
15
17
|
module Gapic
|
16
18
|
class CallOptions
|
17
19
|
##
|
@@ -74,6 +76,7 @@ module Gapic
|
|
74
76
|
#
|
75
77
|
# @param retry_policy [Hash] The policy for error retry. keys must match the arguments for
|
76
78
|
# {RpcCall::RetryPolicy.new}.
|
79
|
+
#
|
77
80
|
def apply_defaults retry_policy
|
78
81
|
return unless retry_policy.is_a? Hash
|
79
82
|
|
@@ -85,38 +88,27 @@ module Gapic
|
|
85
88
|
self
|
86
89
|
end
|
87
90
|
|
88
|
-
# @private
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
"NOT_FOUND",
|
98
|
-
"ALREADY_EXISTS",
|
99
|
-
"PERMISSION_DENIED",
|
100
|
-
"RESOURCE_EXHAUSTED",
|
101
|
-
"FAILED_PRECONDITION",
|
102
|
-
"ABORTED",
|
103
|
-
"OUT_OF_RANGE",
|
104
|
-
"UNIMPLEMENTED",
|
105
|
-
"INTERNAL",
|
106
|
-
"UNAVAILABLE",
|
107
|
-
"DATA_LOSS",
|
108
|
-
"UNAUTHENTICATED"
|
109
|
-
].freeze
|
91
|
+
# @private Equality test
|
92
|
+
def eql? other
|
93
|
+
other.is_a?(RetryPolicy) &&
|
94
|
+
other.retry_codes == retry_codes &&
|
95
|
+
other.initial_delay == initial_delay &&
|
96
|
+
other.multiplier == multiplier &&
|
97
|
+
other.max_delay == max_delay
|
98
|
+
end
|
99
|
+
alias == eql?
|
110
100
|
|
111
|
-
# @private
|
112
|
-
|
113
|
-
|
114
|
-
end
|
101
|
+
# @private Hash code
|
102
|
+
def hash
|
103
|
+
[retry_codes, initial_delay, multiplier, max_delay].hash
|
104
|
+
end
|
115
105
|
|
116
106
|
private
|
117
107
|
|
118
108
|
def retry? error
|
119
|
-
error.is_a?(GRPC::BadStatus) && retry_codes.include?(error.code)
|
109
|
+
(error.is_a?(::GRPC::BadStatus) && retry_codes.include?(error.code)) ||
|
110
|
+
(error.respond_to?(:response_status) &&
|
111
|
+
retry_codes.include?(ErrorCodes.grpc_error_for(error.response_status)))
|
120
112
|
end
|
121
113
|
|
122
114
|
def delay!
|
@@ -129,7 +121,7 @@ module Gapic
|
|
129
121
|
Array(input_codes).map do |obj|
|
130
122
|
case obj
|
131
123
|
when String
|
132
|
-
ERROR_STRING_MAPPING[obj]
|
124
|
+
ErrorCodes::ERROR_STRING_MAPPING[obj]
|
133
125
|
when Integer
|
134
126
|
obj
|
135
127
|
end
|
data/lib/gapic/call_options.rb
CHANGED
@@ -12,6 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
require "gapic/call_options/error_codes"
|
15
16
|
require "gapic/call_options/retry_policy"
|
16
17
|
|
17
18
|
module Gapic
|
@@ -61,12 +62,18 @@ module Gapic
|
|
61
62
|
# @param retry_policy [Hash] the policy for error retry.
|
62
63
|
# @param retry_policy [Hash] The policy for error retry. keys must match the arguments for
|
63
64
|
# {RetryPolicy.new}.
|
65
|
+
#
|
64
66
|
def apply_defaults timeout: nil, metadata: nil, retry_policy: nil
|
65
67
|
@timeout ||= timeout
|
66
68
|
@metadata = metadata.merge @metadata if metadata
|
67
69
|
@retry_policy.apply_defaults retry_policy if @retry_policy.respond_to? :apply_defaults
|
68
70
|
end
|
69
71
|
|
72
|
+
##
|
73
|
+
# Convert to hash form.
|
74
|
+
#
|
75
|
+
# @return [Hash]
|
76
|
+
#
|
70
77
|
def to_h
|
71
78
|
{
|
72
79
|
timeout: timeout,
|
@@ -74,5 +81,31 @@ module Gapic
|
|
74
81
|
retry_policy: retry_policy
|
75
82
|
}
|
76
83
|
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# Return a new CallOptions with the given modifications. The current object
|
87
|
+
# is not modified.
|
88
|
+
#
|
89
|
+
# @param kwargs [keywords] Updated fields. See {#initialize} for details.
|
90
|
+
# @return [CallOptions] A new CallOptions object.
|
91
|
+
#
|
92
|
+
def merge **kwargs
|
93
|
+
kwargs = to_h.merge kwargs
|
94
|
+
CallOptions.new(**kwargs)
|
95
|
+
end
|
96
|
+
|
97
|
+
# @private Equality test
|
98
|
+
def eql? other
|
99
|
+
other.is_a?(CallOptions) &&
|
100
|
+
other.timeout == timeout &&
|
101
|
+
other.metadata == metadata &&
|
102
|
+
other.retry_policy == retry_policy
|
103
|
+
end
|
104
|
+
alias == eql?
|
105
|
+
|
106
|
+
# @private Hash code
|
107
|
+
def hash
|
108
|
+
to_h.hash
|
109
|
+
end
|
77
110
|
end
|
78
111
|
end
|
data/lib/gapic/common/version.rb
CHANGED
@@ -140,7 +140,8 @@ module Gapic
|
|
140
140
|
# @return [Boolean] Whether an error has been returned.
|
141
141
|
#
|
142
142
|
def error?
|
143
|
-
|
143
|
+
no_error_code = error_code.nil? || error_code.zero?
|
144
|
+
done? && !(err.nil? && no_error_code)
|
144
145
|
end
|
145
146
|
|
146
147
|
##
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Copyright 2019 Google LLC
|
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
|
+
# https://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
|
+
require "googleauth"
|
16
|
+
require "gapic/common/error"
|
17
|
+
|
18
|
+
module Gapic
|
19
|
+
module GRPC
|
20
|
+
##
|
21
|
+
# An error class to represent the Authorization Error.
|
22
|
+
# The GRPC layer wraps auth plugin errors in ::GRPC::Unavailable.
|
23
|
+
# This class rewraps those GRPC layer errors, presenting a correct status code.
|
24
|
+
#
|
25
|
+
class AuthorizationError < ::GRPC::Unauthenticated
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# An error class that represents Deadline Exceeded error with an optional
|
30
|
+
# retry root cause.
|
31
|
+
#
|
32
|
+
# The GRPC layer throws ::GRPC::DeadlineExceeded without any context.
|
33
|
+
# If the deadline was exceeded while retrying another exception (e.g.
|
34
|
+
# ::GRPC::Unavailable), that exception could be useful for understanding
|
35
|
+
# the readon for the timeout.
|
36
|
+
#
|
37
|
+
# This exception rewraps ::GRPC::DeadlineExceeded, adding an exception
|
38
|
+
# that was being retried until the deadline was exceeded (if any) as a
|
39
|
+
# `root_cause` attribute.
|
40
|
+
#
|
41
|
+
# @!attribute [r] root_cause
|
42
|
+
# @return [Object, nil] The exception that was being retried
|
43
|
+
# when the DeadlineExceeded error occured.
|
44
|
+
#
|
45
|
+
class DeadlineExceededError < ::GRPC::DeadlineExceeded
|
46
|
+
attr_reader :root_cause
|
47
|
+
|
48
|
+
##
|
49
|
+
# @param message [String] The error message.
|
50
|
+
#
|
51
|
+
# @param root_cause [Object, nil] The exception that was being retried
|
52
|
+
# when the DeadlineExceeded error occured.
|
53
|
+
#
|
54
|
+
def initialize message, root_cause: nil
|
55
|
+
super message
|
56
|
+
@root_cause = root_cause
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -13,6 +13,7 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
require "gapic/call_options"
|
16
|
+
require "grpc/errors"
|
16
17
|
|
17
18
|
module Gapic
|
18
19
|
class ServiceStub
|
@@ -45,7 +46,7 @@ module Gapic
|
|
45
46
|
#
|
46
47
|
# @yield [response, operation] Access the response along with the RPC operation.
|
47
48
|
# @yieldparam response [Object] The response object.
|
48
|
-
# @yieldparam operation [GRPC::ActiveCall::Operation] The RPC operation for the response.
|
49
|
+
# @yieldparam operation [::GRPC::ActiveCall::Operation] The RPC operation for the response.
|
49
50
|
#
|
50
51
|
# @return [Object] The response object.
|
51
52
|
#
|
@@ -55,7 +56,7 @@ module Gapic
|
|
55
56
|
# require "gapic"
|
56
57
|
# require "gapic/grpc"
|
57
58
|
#
|
58
|
-
# echo_channel = GRPC::Core::Channel.new(
|
59
|
+
# echo_channel = ::GRPC::Core::Channel.new(
|
59
60
|
# "localhost:7469", nil, :this_channel_is_insecure
|
60
61
|
# )
|
61
62
|
# echo_stub = Gapic::ServiceStub.new(
|
@@ -73,7 +74,7 @@ module Gapic
|
|
73
74
|
# require "gapic"
|
74
75
|
# require "gapic/grpc"
|
75
76
|
#
|
76
|
-
# echo_channel = GRPC::Core::Channel.new(
|
77
|
+
# echo_channel = ::GRPC::Core::Channel.new(
|
77
78
|
# "localhost:7469", nil, :this_channel_is_insecure
|
78
79
|
# )
|
79
80
|
# echo_stub = Gapic::ServiceStub.new(
|
@@ -85,7 +86,7 @@ module Gapic
|
|
85
86
|
# request = Google::Showcase::V1beta1::EchoRequest.new
|
86
87
|
# options = Gapic::CallOptions.new(
|
87
88
|
# retry_policy = {
|
88
|
-
# retry_codes: [GRPC::Core::StatusCodes::UNAVAILABLE]
|
89
|
+
# retry_codes: [::GRPC::Core::StatusCodes::UNAVAILABLE]
|
89
90
|
# }
|
90
91
|
# )
|
91
92
|
# response = echo_call.call request, options: options
|
@@ -96,7 +97,7 @@ module Gapic
|
|
96
97
|
# require "gapic"
|
97
98
|
# require "gapic/grpc"
|
98
99
|
#
|
99
|
-
# echo_channel = GRPC::Core::Channel.new(
|
100
|
+
# echo_channel = ::GRPC::Core::Channel.new(
|
100
101
|
# "localhost:7469", nil, :this_channel_is_insecure
|
101
102
|
# )
|
102
103
|
# echo_stub = Gapic::ServiceStub.new(
|
@@ -116,13 +117,23 @@ module Gapic
|
|
116
117
|
deadline = calculate_deadline options
|
117
118
|
metadata = options.metadata
|
118
119
|
|
120
|
+
retried_exception = nil
|
119
121
|
begin
|
120
122
|
operation = stub_method.call request, deadline: deadline, metadata: metadata, return_op: true
|
121
123
|
response = operation.execute
|
122
124
|
yield response, operation if block_given?
|
123
125
|
response
|
126
|
+
rescue ::GRPC::DeadlineExceeded => e
|
127
|
+
raise Gapic::GRPC::DeadlineExceededError.new e.message, root_cause: retried_exception
|
124
128
|
rescue StandardError => e
|
125
|
-
|
129
|
+
if e.is_a?(::GRPC::Unavailable) && /Signet::AuthorizationError/ =~ e.message
|
130
|
+
e = Gapic::GRPC::AuthorizationError.new e.message.gsub(%r{^\d+:}, "")
|
131
|
+
end
|
132
|
+
|
133
|
+
if check_retry?(deadline) && options.retry_policy.call(e)
|
134
|
+
retried_exception = e
|
135
|
+
retry
|
136
|
+
end
|
126
137
|
|
127
138
|
raise e
|
128
139
|
end
|
@@ -34,20 +34,20 @@ module Gapic
|
|
34
34
|
# @param grpc_stub_class [Class] gRPC stub class to create a new instance of.
|
35
35
|
# @param endpoint [String] The endpoint of the API.
|
36
36
|
# @param credentials [Google::Auth::Credentials, Signet::OAuth2::Client, String, Hash, Proc,
|
37
|
-
# GRPC::Core::Channel, GRPC::Core::ChannelCredentials] Provides the means for authenticating requests made by
|
37
|
+
# ::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] Provides the means for authenticating requests made by
|
38
38
|
# the client. This parameter can be many types:
|
39
39
|
#
|
40
40
|
# * A `Google::Auth::Credentials` uses a the properties of its represented keyfile for authenticating requests
|
41
41
|
# made by this client.
|
42
42
|
# * A `Signet::OAuth2::Client` object used to apply the OAuth credentials.
|
43
|
-
# * A
|
44
|
-
# * A
|
45
|
-
# already be composed with a
|
43
|
+
# * A `::GRPC::Core::Channel` will be used to make calls through.
|
44
|
+
# * A `::GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials should
|
45
|
+
# already be composed with a `::GRPC::Core::CallCredentials` object.
|
46
46
|
# * A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the metadata for
|
47
47
|
# requests, generally, to give OAuth credentials.
|
48
48
|
# @param channel_args [Hash] The channel arguments. (This argument is ignored when `credentials` is
|
49
|
-
# provided as a
|
50
|
-
# @param interceptors [Array
|
49
|
+
# provided as a `::GRPC::Core::Channel`.)
|
50
|
+
# @param interceptors [Array<::GRPC::ClientInterceptor>] An array of {::GRPC::ClientInterceptor} objects that will
|
51
51
|
# be used for intercepting calls before they are executed Interceptors are an EXPERIMENTAL API.
|
52
52
|
#
|
53
53
|
def initialize grpc_stub_class, endpoint:, credentials:, channel_args: nil, interceptors: nil
|
@@ -59,10 +59,10 @@ module Gapic
|
|
59
59
|
interceptors = Array interceptors
|
60
60
|
|
61
61
|
@grpc_stub = case credentials
|
62
|
-
when GRPC::Core::Channel
|
62
|
+
when ::GRPC::Core::Channel
|
63
63
|
grpc_stub_class.new endpoint, nil, channel_override: credentials,
|
64
64
|
interceptors: interceptors
|
65
|
-
when GRPC::Core::ChannelCredentials, Symbol
|
65
|
+
when ::GRPC::Core::ChannelCredentials, Symbol
|
66
66
|
grpc_stub_class.new endpoint, credentials, channel_args: channel_args,
|
67
67
|
interceptors: interceptors
|
68
68
|
else
|
@@ -70,8 +70,8 @@ module Gapic
|
|
70
70
|
updater_proc ||= credentials if credentials.is_a? Proc
|
71
71
|
raise ArgumentError, "invalid credentials (#{credentials.class})" if updater_proc.nil?
|
72
72
|
|
73
|
-
call_creds = GRPC::Core::CallCredentials.new updater_proc
|
74
|
-
chan_creds = GRPC::Core::ChannelCredentials.new.compose call_creds
|
73
|
+
call_creds = ::GRPC::Core::CallCredentials.new updater_proc
|
74
|
+
chan_creds = ::GRPC::Core::ChannelCredentials.new.compose call_creds
|
75
75
|
grpc_stub_class.new endpoint, chan_creds, channel_args: channel_args,
|
76
76
|
interceptors: interceptors
|
77
77
|
end
|
@@ -88,7 +88,7 @@ module Gapic
|
|
88
88
|
#
|
89
89
|
# @yield [response, operation] Access the response along with the RPC operation.
|
90
90
|
# @yieldparam response [Object] The response object.
|
91
|
-
# @yieldparam operation [GRPC::ActiveCall::Operation] The RPC operation for the response.
|
91
|
+
# @yieldparam operation [::GRPC::ActiveCall::Operation] The RPC operation for the response.
|
92
92
|
#
|
93
93
|
# @return [Object] The response object.
|
94
94
|
#
|
@@ -98,7 +98,7 @@ module Gapic
|
|
98
98
|
# require "gapic"
|
99
99
|
# require "gapic/grpc"
|
100
100
|
#
|
101
|
-
# echo_channel = GRPC::Core::Channel.new(
|
101
|
+
# echo_channel = ::GRPC::Core::Channel.new(
|
102
102
|
# "localhost:7469", nil, :this_channel_is_insecure
|
103
103
|
# )
|
104
104
|
# echo_stub = Gapic::ServiceStub.new(
|
@@ -115,7 +115,7 @@ module Gapic
|
|
115
115
|
# require "gapic"
|
116
116
|
# require "gapic/grpc"
|
117
117
|
#
|
118
|
-
# echo_channel = GRPC::Core::Channel.new(
|
118
|
+
# echo_channel = ::GRPC::Core::Channel.new(
|
119
119
|
# "localhost:7469", nil, :this_channel_is_insecure
|
120
120
|
# )
|
121
121
|
# echo_stub = Gapic::ServiceStub.new(
|
@@ -126,7 +126,7 @@ module Gapic
|
|
126
126
|
# request = Google::Showcase::V1beta1::EchoRequest.new
|
127
127
|
# options = Gapic::CallOptions.new(
|
128
128
|
# retry_policy = {
|
129
|
-
# retry_codes: [GRPC::Core::StatusCodes::UNAVAILABLE]
|
129
|
+
# retry_codes: [::GRPC::Core::StatusCodes::UNAVAILABLE]
|
130
130
|
# }
|
131
131
|
# )
|
132
132
|
# response = echo_stub.call_rpc :echo, request
|
@@ -138,7 +138,7 @@ module Gapic
|
|
138
138
|
# require "gapic"
|
139
139
|
# require "gapic/grpc"
|
140
140
|
#
|
141
|
-
# echo_channel = GRPC::Core::Channel.new(
|
141
|
+
# echo_channel = ::GRPC::Core::Channel.new(
|
142
142
|
# "localhost:7469", nil, :this_channel_is_insecure
|
143
143
|
# )
|
144
144
|
# echo_stub = Gapic::ServiceStub.new(
|
data/lib/gapic/grpc.rb
CHANGED
data/lib/gapic/headers.rb
CHANGED
@@ -25,7 +25,7 @@ module Gapic
|
|
25
25
|
# @param lib_version [String] The client library version.
|
26
26
|
# @param gax_version [String] The Gapic version. Defaults to `Gapic::Common::VERSION`.
|
27
27
|
# @param gapic_version [String] The Gapic version.
|
28
|
-
# @param grpc_version [String] The GRPC version. Defaults to
|
28
|
+
# @param grpc_version [String] The GRPC version. Defaults to `::GRPC::VERSION`.
|
29
29
|
# @param rest_version [String] The Rest Library (Faraday) version. Defaults to `Faraday::VERSION`.
|
30
30
|
# @param transports_version_send [Array] Which transports to send versions for.
|
31
31
|
# Allowed values to contain are:
|
@@ -33,13 +33,14 @@ module Gapic
|
|
33
33
|
# `:rest` to send the REST library version (if defined)
|
34
34
|
# Defaults to `[:grpc]`
|
35
35
|
def self.x_goog_api_client ruby_version: nil, lib_name: nil, lib_version: nil, gax_version: nil,
|
36
|
-
gapic_version: nil, grpc_version: nil, rest_version: nil,
|
36
|
+
gapic_version: nil, grpc_version: nil, rest_version: nil, protobuf_version: nil,
|
37
37
|
transports_version_send: [:grpc]
|
38
38
|
|
39
39
|
ruby_version ||= ::RUBY_VERSION
|
40
40
|
gax_version ||= ::Gapic::Common::VERSION
|
41
41
|
grpc_version ||= ::GRPC::VERSION if defined? ::GRPC::VERSION
|
42
|
-
rest_version ||= ::Faraday::VERSION if defined? ::Faraday
|
42
|
+
rest_version ||= ::Faraday::VERSION if defined? ::Faraday::VERSION
|
43
|
+
protobuf_version ||= Gem.loaded_specs["google-protobuf"].version.to_s if Gem.loaded_specs.key? "google-protobuf"
|
43
44
|
|
44
45
|
x_goog_api_client_header = ["gl-ruby/#{ruby_version}"]
|
45
46
|
x_goog_api_client_header << "#{lib_name}/#{lib_version}" if lib_name
|
@@ -47,6 +48,7 @@ module Gapic
|
|
47
48
|
x_goog_api_client_header << "gapic/#{gapic_version}" if gapic_version
|
48
49
|
x_goog_api_client_header << "grpc/#{grpc_version}" if grpc_version && transports_version_send.include?(:grpc)
|
49
50
|
x_goog_api_client_header << "rest/#{rest_version}" if rest_version && transports_version_send.include?(:rest)
|
51
|
+
x_goog_api_client_header << "pb/#{protobuf_version}" if protobuf_version
|
50
52
|
x_goog_api_client_header.join " ".freeze
|
51
53
|
end
|
52
54
|
end
|
@@ -53,7 +53,7 @@ module Gapic
|
|
53
53
|
# @param method_name [Symbol] The RPC method name.
|
54
54
|
# @param request [Object] The request object.
|
55
55
|
# @param response [Object] The response object.
|
56
|
-
# @param operation [GRPC::ActiveCall::Operation] The RPC operation for the response.
|
56
|
+
# @param operation [::GRPC::ActiveCall::Operation] The RPC operation for the response.
|
57
57
|
# @param options [Gapic::CallOptions] The options for making the RPC call.
|
58
58
|
# @param format_resource [Proc] A Proc object to format the resource object. The Proc should accept response as an
|
59
59
|
# argument, and return a formatted resource object. Optional.
|
@@ -195,7 +195,7 @@ module Gapic
|
|
195
195
|
# @attribute [r] response
|
196
196
|
# @return [Object] the response object for the page.
|
197
197
|
# @attribute [r] operation
|
198
|
-
# @return [GRPC::ActiveCall::Operation] the RPC operation for the page.
|
198
|
+
# @return [::GRPC::ActiveCall::Operation] the RPC operation for the page.
|
199
199
|
class Page
|
200
200
|
include Enumerable
|
201
201
|
attr_reader :response
|
@@ -205,7 +205,7 @@ module Gapic
|
|
205
205
|
# @private
|
206
206
|
# @param response [Object] The response object for the page.
|
207
207
|
# @param resource_field [String] The name of the field in response which holds the resources.
|
208
|
-
# @param operation [GRPC::ActiveCall::Operation] the RPC operation for the page.
|
208
|
+
# @param operation [::GRPC::ActiveCall::Operation] the RPC operation for the page.
|
209
209
|
# @param format_resource [Proc] A Proc object to format the resource object. The Proc should accept response as an
|
210
210
|
# argument, and return a formatted resource object. Optional.
|
211
211
|
#
|