gapic-generator 0.9.1 → 0.10.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 +18 -0
- data/lib/gapic/generator/version.rb +1 -1
- data/lib/gapic/generators/default_generator.rb +1 -1
- data/lib/gapic/generators/default_generator_parameters.rb +3 -1
- data/lib/gapic/presenters/gem_presenter.rb +12 -1
- data/lib/gapic/presenters/method/rest_pagination_info.rb +246 -0
- data/lib/gapic/presenters/method_presenter.rb +13 -2
- data/lib/gapic/presenters/method_rest_presenter.rb +60 -2
- data/lib/gapic/presenters/resource_presenter.rb +8 -0
- data/lib/gapic/presenters/service_presenter.rb +51 -0
- data/lib/gapic/presenters/service_rest_presenter.rb +42 -16
- data/lib/gapic/presenters/snippet_presenter.rb +1 -1
- data/lib/gapic/schema/api.rb +6 -1
- data/lib/gapic/schema/wrappers.rb +26 -0
- data/templates/default/lib/rest/_rest.erb +0 -2
- data/templates/default/service/client/_client.erb +17 -19
- data/templates/default/service/client/_config.erb +13 -14
- data/templates/default/service/client/_paths.erb +1 -1
- data/templates/default/service/client/method/_def.erb +2 -0
- data/templates/default/service/client/method/def/_options_defaults.erb +3 -1
- data/templates/default/service/client/method/docs/_deprecated.erb +5 -0
- data/templates/default/service/client/method/docs/_snippets.erb +6 -0
- data/templates/default/service/rest/client/_client.erb +14 -23
- data/templates/default/service/rest/client/_config.erb +48 -0
- data/templates/default/service/rest/client/method/_def.erb +1 -1
- data/templates/default/service/rest/client/method/def/_options_defaults.erb +5 -2
- data/templates/default/service/rest/client/method/def/_response.erb +6 -0
- data/templates/default/service/rest/client/method/def/_response_normal.erb +4 -15
- data/templates/default/service/rest/client/method/def/_response_paged.erb +7 -0
- data/templates/default/service/rest/client/method/docs/_result.erb +3 -3
- data/templates/default/service/rest/service_stub.erb +6 -0
- data/templates/default/service/rest/service_stub/_service_stub.erb +25 -0
- data/templates/default/service/rest/{grpc_transcoding/method → service_stub/grpc_transcoding_method}/_def.erb +4 -1
- data/templates/default/service/rest/{grpc_transcoding/method → service_stub/grpc_transcoding_method}/def/_query_string_param.erb +0 -0
- data/templates/default/service/rest/service_stub/method/_def.erb +20 -0
- data/templates/default/service/rest/service_stub/method/def/_request.erb +2 -0
- data/templates/default/service/rest/service_stub/method/def/_response.erb +17 -0
- data/templates/default/service/rest/test/client.erb +1 -1
- data/templates/default/service/test/client_paths.erb +1 -1
- metadata +19 -11
- data/templates/default/service/rest/client/_requires.erb +0 -1
- data/templates/default/service/rest/grpc_transcoding/_grpc_transcoding.erb +0 -9
|
@@ -51,6 +51,9 @@
|
|
|
51
51
|
# @!attribute [rw] timeout
|
|
52
52
|
# The call timeout in seconds.
|
|
53
53
|
# @return [::Numeric]
|
|
54
|
+
# @!attribute [rw] metadata
|
|
55
|
+
# Additional REST headers to be sent with the call.
|
|
56
|
+
# @return [::Hash{::Symbol=>::String}]
|
|
54
57
|
#
|
|
55
58
|
class Configuration
|
|
56
59
|
extend ::Gapic::Config
|
|
@@ -64,6 +67,7 @@ class Configuration
|
|
|
64
67
|
config_attr :lib_name, nil, ::String, nil
|
|
65
68
|
config_attr :lib_version, nil, ::String, nil
|
|
66
69
|
config_attr :timeout, nil, ::Numeric, nil
|
|
70
|
+
config_attr :metadata, nil, ::Hash, nil
|
|
67
71
|
|
|
68
72
|
# @private
|
|
69
73
|
def initialize parent_config = nil
|
|
@@ -71,4 +75,48 @@ class Configuration
|
|
|
71
75
|
|
|
72
76
|
yield self if block_given?
|
|
73
77
|
end
|
|
78
|
+
|
|
79
|
+
##
|
|
80
|
+
# Configurations for individual RPCs
|
|
81
|
+
# @return [Rpcs]
|
|
82
|
+
#
|
|
83
|
+
def rpcs
|
|
84
|
+
@rpcs ||= begin
|
|
85
|
+
parent_rpcs = nil
|
|
86
|
+
parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs)
|
|
87
|
+
Rpcs.new parent_rpcs
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
##
|
|
92
|
+
# Configuration RPC class for the <%= service.name %> API.
|
|
93
|
+
#
|
|
94
|
+
# Includes fields providing the configuration for each RPC in this service.
|
|
95
|
+
# Each configuration object is of type `Gapic::Config::Method` and includes
|
|
96
|
+
# the following configuration fields:
|
|
97
|
+
#
|
|
98
|
+
# * `timeout` (*type:* `Numeric`) - The call timeout in seconds
|
|
99
|
+
#
|
|
100
|
+
# there is one other field (`retry_policy`) that can be set
|
|
101
|
+
# but is currently not supported for REST Gapic libraries.
|
|
102
|
+
#
|
|
103
|
+
class Rpcs
|
|
104
|
+
<%- method_service.methods.each do |method| -%>
|
|
105
|
+
##
|
|
106
|
+
# RPC-specific configuration for `<%= method.name %>`
|
|
107
|
+
# @return [::Gapic::Config::Method]
|
|
108
|
+
#
|
|
109
|
+
attr_reader :<%= method.name %>
|
|
110
|
+
<%- end -%>
|
|
111
|
+
|
|
112
|
+
# @private
|
|
113
|
+
def initialize parent_rpcs = nil
|
|
114
|
+
<%- method_service.methods.each do |method| -%>
|
|
115
|
+
<%= method.name %>_config = parent_rpcs.<%= method.name %> if parent_rpcs.respond_to? :<%= method.name %>
|
|
116
|
+
@<%= method.name %> = ::Gapic::Config::Method.new <%= method.name %>_config
|
|
117
|
+
<%- end -%>
|
|
118
|
+
|
|
119
|
+
yield self if block_given?
|
|
120
|
+
end
|
|
121
|
+
end
|
|
74
122
|
end
|
|
@@ -13,6 +13,6 @@ def <%= method.name %> request, options = nil
|
|
|
13
13
|
|
|
14
14
|
<%= indent render(partial: "service/rest/client/method/def/options_defaults", locals: { method: method }), 2 %>
|
|
15
15
|
|
|
16
|
-
<%= indent render(partial: "service/rest/client/method/def/
|
|
16
|
+
<%= indent render(partial: "service/rest/client/method/def/response", locals: { method: method }), 2 %>
|
|
17
17
|
<%= render partial: "service/rest/client/method/def/rescue", locals: { method: method } -%>
|
|
18
18
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
|
|
4
4
|
|
|
5
5
|
# Customize the options with defaults
|
|
6
|
-
call_metadata =
|
|
6
|
+
call_metadata = @config.rpcs.<%= method.name %>.metadata.to_h
|
|
7
7
|
|
|
8
8
|
# Set x-goog-api-client header
|
|
9
9
|
call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
|
|
@@ -11,5 +11,8 @@ call_metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
|
|
|
11
11
|
gapic_version: ::<%= method.service.gem.version_name_full %>,
|
|
12
12
|
transports_version_send: [:rest]
|
|
13
13
|
|
|
14
|
-
options.apply_defaults timeout: @config.timeout,
|
|
14
|
+
options.apply_defaults timeout: @config.rpcs.<%= method.name %>.timeout,
|
|
15
15
|
metadata: call_metadata
|
|
16
|
+
|
|
17
|
+
options.apply_defaults timeout: @config.timeout,
|
|
18
|
+
metadata: @config.metadata
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<%- assert_locals method -%>
|
|
2
|
+
<%- if method.rest.paged? -%>
|
|
3
|
+
<%= render partial: "service/rest/client/method/def/response_paged", locals: { method: method } -%>
|
|
4
|
+
<%- else -%>
|
|
5
|
+
<%= render partial: "service/rest/client/method/def/response_normal", locals: { method: method } -%>
|
|
6
|
+
<%- end -%>
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
<%- assert_locals method -%>
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
body: body,
|
|
8
|
-
<%- end -%>
|
|
9
|
-
<%- if method.rest.query_string_params? -%>
|
|
10
|
-
params: query_string_params,
|
|
11
|
-
<%- end -%>
|
|
12
|
-
options: options
|
|
13
|
-
)
|
|
14
|
-
result = <%= method.return_type %>.decode_json response.body, ignore_unknown_fields: true
|
|
15
|
-
|
|
16
|
-
yield result, response if block_given?
|
|
17
|
-
result
|
|
3
|
+
@<%= method.service.stub_name %>.<%= method.name %> request, options do |result, response|
|
|
4
|
+
yield result, response if block_given?
|
|
5
|
+
return result
|
|
6
|
+
end
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<%- assert_locals method -%>
|
|
2
|
+
|
|
3
|
+
@<%= method.service.stub_name %>.<%= method.name %> request, options do |result, response|
|
|
4
|
+
result = ::Gapic::Rest::PagedEnumerable.new @<%= method.service.stub_name %>, :<%= method.name %>, "<%= method.rest.pagination.response_repeated_field_name %>", request, result, options
|
|
5
|
+
yield result, response if block_given?
|
|
6
|
+
return result
|
|
7
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<%- assert_locals method -%>
|
|
2
|
-
# @yield [result,
|
|
3
|
-
# @yieldparam result [<%= method.doc_response_type %>]
|
|
2
|
+
# @yield [result, response] Access the result along with the Faraday response object
|
|
3
|
+
# @yieldparam result [<%= method.rest.doc_response_type %>]
|
|
4
4
|
# @yieldparam response [::Faraday::Response]
|
|
5
5
|
#
|
|
6
|
-
# @return [<%= method.doc_response_type %>]
|
|
6
|
+
# @return [<%= method.rest.doc_response_type %>]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<%- assert_locals service -%>
|
|
2
|
+
<% @requires = capture do %>
|
|
3
|
+
require "<%= service.proto_service_require %>"
|
|
4
|
+
<% end %>
|
|
5
|
+
##
|
|
6
|
+
# REST service stub for the <%= service.name %> service.
|
|
7
|
+
# service stub contains baseline method implementations
|
|
8
|
+
# including transcoding, making the REST call and deserialing the response
|
|
9
|
+
#
|
|
10
|
+
class <%= service.rest.service_stub_name %>
|
|
11
|
+
def initialize endpoint:, credentials:
|
|
12
|
+
# These require statements are intentionally placed here to initialize
|
|
13
|
+
# the REST modules only when it's required.
|
|
14
|
+
require "gapic/rest"
|
|
15
|
+
|
|
16
|
+
@client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint, credentials: credentials
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
<%- service.methods.each do |method| -%>
|
|
20
|
+
|
|
21
|
+
<%= indent_tail render(partial: "service/rest/service_stub/method/def", locals: { method: method }), 2 %>
|
|
22
|
+
|
|
23
|
+
<%= indent_tail render(partial: "service/rest/service_stub/grpc_transcoding_method/def", locals: { method: method }), 2 %>
|
|
24
|
+
<%- end %>
|
|
25
|
+
end
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
<%- assert_locals method -%>
|
|
2
|
+
##
|
|
3
|
+
# GRPC transcoding helper method for the <%= method.name %> REST call
|
|
4
|
+
#
|
|
2
5
|
# @param request_pb [<%= method.request_type %>]
|
|
3
6
|
# A request object representing the call parameters. Required.
|
|
4
7
|
# @return [Array(String, [String, nil], Hash{String => String})]
|
|
@@ -13,7 +16,7 @@ def <%= method.rest.transcoding_helper_name %> request_pb
|
|
|
13
16
|
query_string_params = {}
|
|
14
17
|
<%- if method.rest.query_string_params? -%>
|
|
15
18
|
<%- method.rest.query_string_params.each do |field| -%>
|
|
16
|
-
<%= render partial: "service/rest/
|
|
19
|
+
<%= render partial: "service/rest/service_stub/grpc_transcoding_method/def/query_string_param", locals: { field: field } -%>
|
|
17
20
|
<%- end -%>
|
|
18
21
|
<%- end -%>
|
|
19
22
|
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<%- assert_locals method -%>
|
|
2
|
+
##
|
|
3
|
+
# Baseline implementation for the <%= method.name %> REST call
|
|
4
|
+
#
|
|
5
|
+
# @param request_pb [<%= method.rest.request_type %>]
|
|
6
|
+
# A request object representing the call parameters. Required.
|
|
7
|
+
# @param options [::Gapic::CallOptions]
|
|
8
|
+
# Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
|
|
9
|
+
#
|
|
10
|
+
# @yield [result, response] Access the result along with the Faraday response object
|
|
11
|
+
# @yieldparam result [<%= method.rest.return_type %>]
|
|
12
|
+
# @yieldparam response [::Faraday::Response]
|
|
13
|
+
#
|
|
14
|
+
# @return [<%= method.rest.return_type %>]
|
|
15
|
+
# A result object deserialized from the server's reply
|
|
16
|
+
def <%= method.name %> request_pb, options = nil
|
|
17
|
+
<%= indent render(partial: "service/rest/service_stub/method/def/request", locals: { method: method }), 2 %>
|
|
18
|
+
|
|
19
|
+
<%= indent render(partial: "service/rest/service_stub/method/def/response", locals: { method: method }), 2 %>
|
|
20
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<%- assert_locals method -%>
|
|
2
|
+
|
|
3
|
+
uri, <%= method.rest.body_var_name %>, <%= method.rest.query_string_params_var_name %> = <%= method.rest.transcoding_helper_name %> request_pb
|
|
4
|
+
response = @client_stub.make_<%= method.rest.verb %>_request(
|
|
5
|
+
uri: uri,
|
|
6
|
+
<%- if method.rest.body? -%>
|
|
7
|
+
body: body,
|
|
8
|
+
<%- end -%>
|
|
9
|
+
<%- if method.rest.query_string_params? -%>
|
|
10
|
+
params: query_string_params,
|
|
11
|
+
<%- end -%>
|
|
12
|
+
options: options
|
|
13
|
+
)
|
|
14
|
+
result = <%= method.return_type %>.decode_json response.body, ignore_unknown_fields: true
|
|
15
|
+
|
|
16
|
+
yield result, response if block_given?
|
|
17
|
+
result
|
|
@@ -7,7 +7,7 @@ require "gapic/grpc/service_stub"
|
|
|
7
7
|
require "<%= service.service_require %>"
|
|
8
8
|
|
|
9
9
|
class <%= service.client_name_full %>PathsTest < Minitest::Test
|
|
10
|
-
<%- service.
|
|
10
|
+
<%- service.deduped_references.each do |resource| -%>
|
|
11
11
|
<%= indent render(partial: "service/test/resource",
|
|
12
12
|
locals: { resource: resource, service: service }), 2 %>
|
|
13
13
|
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gapic-generator
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ernest Landrito
|
|
8
8
|
- Chris Smith
|
|
9
9
|
- Mike Moore
|
|
10
|
-
autorequire:
|
|
10
|
+
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2021-
|
|
13
|
+
date: 2021-08-09 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: actionpack
|
|
@@ -152,7 +152,7 @@ dependencies:
|
|
|
152
152
|
- - "~>"
|
|
153
153
|
- !ruby/object:Gem::Version
|
|
154
154
|
version: '0.9'
|
|
155
|
-
description:
|
|
155
|
+
description:
|
|
156
156
|
email:
|
|
157
157
|
- landrito@google.com
|
|
158
158
|
- quartzmo@gmail.com
|
|
@@ -215,6 +215,7 @@ files:
|
|
|
215
215
|
- lib/gapic/presenters/file_presenter.rb
|
|
216
216
|
- lib/gapic/presenters/gem_presenter.rb
|
|
217
217
|
- lib/gapic/presenters/message_presenter.rb
|
|
218
|
+
- lib/gapic/presenters/method/rest_pagination_info.rb
|
|
218
219
|
- lib/gapic/presenters/method_presenter.rb
|
|
219
220
|
- lib/gapic/presenters/method_rest_presenter.rb
|
|
220
221
|
- lib/gapic/presenters/package_presenter.rb
|
|
@@ -295,6 +296,7 @@ files:
|
|
|
295
296
|
- templates/default/service/client/method/def/_response.erb
|
|
296
297
|
- templates/default/service/client/method/def/_response_normal.erb
|
|
297
298
|
- templates/default/service/client/method/def/_response_paged.erb
|
|
299
|
+
- templates/default/service/client/method/docs/_deprecated.erb
|
|
298
300
|
- templates/default/service/client/method/docs/_error.erb
|
|
299
301
|
- templates/default/service/client/method/docs/_request.erb
|
|
300
302
|
- templates/default/service/client/method/docs/_request_field.erb
|
|
@@ -304,6 +306,7 @@ files:
|
|
|
304
306
|
- templates/default/service/client/method/docs/_sample.erb
|
|
305
307
|
- templates/default/service/client/method/docs/_sample_response.erb
|
|
306
308
|
- templates/default/service/client/method/docs/_samples.erb
|
|
309
|
+
- templates/default/service/client/method/docs/_snippets.erb
|
|
307
310
|
- templates/default/service/client/method/docs/request_field/_arg.erb
|
|
308
311
|
- templates/default/service/client/method/docs/request_field/_hash.erb
|
|
309
312
|
- templates/default/service/client/method/docs/sample_response/_comment.erb
|
|
@@ -322,18 +325,23 @@ files:
|
|
|
322
325
|
- templates/default/service/rest/client.erb
|
|
323
326
|
- templates/default/service/rest/client/_client.erb
|
|
324
327
|
- templates/default/service/rest/client/_config.erb
|
|
325
|
-
- templates/default/service/rest/client/_requires.erb
|
|
326
328
|
- templates/default/service/rest/client/method/_def.erb
|
|
327
329
|
- templates/default/service/rest/client/method/def/_options_defaults.erb
|
|
328
330
|
- templates/default/service/rest/client/method/def/_rescue.erb
|
|
331
|
+
- templates/default/service/rest/client/method/def/_response.erb
|
|
329
332
|
- templates/default/service/rest/client/method/def/_response_normal.erb
|
|
333
|
+
- templates/default/service/rest/client/method/def/_response_paged.erb
|
|
330
334
|
- templates/default/service/rest/client/method/docs/_error.erb
|
|
331
335
|
- templates/default/service/rest/client/method/docs/_request.erb
|
|
332
336
|
- templates/default/service/rest/client/method/docs/_result.erb
|
|
333
337
|
- templates/default/service/rest/grpc_transcoding.erb
|
|
334
|
-
- templates/default/service/rest/
|
|
335
|
-
- templates/default/service/rest/
|
|
336
|
-
- templates/default/service/rest/
|
|
338
|
+
- templates/default/service/rest/service_stub.erb
|
|
339
|
+
- templates/default/service/rest/service_stub/_service_stub.erb
|
|
340
|
+
- templates/default/service/rest/service_stub/grpc_transcoding_method/_def.erb
|
|
341
|
+
- templates/default/service/rest/service_stub/grpc_transcoding_method/def/_query_string_param.erb
|
|
342
|
+
- templates/default/service/rest/service_stub/method/_def.erb
|
|
343
|
+
- templates/default/service/rest/service_stub/method/def/_request.erb
|
|
344
|
+
- templates/default/service/rest/service_stub/method/def/_response.erb
|
|
337
345
|
- templates/default/service/rest/test/client.erb
|
|
338
346
|
- templates/default/service/rest/test/method/_assert_response.erb
|
|
339
347
|
- templates/default/service/rest/test/method/_configure.erb
|
|
@@ -361,7 +369,7 @@ homepage: https://github.com/googleapis/gapic-generator-ruby
|
|
|
361
369
|
licenses:
|
|
362
370
|
- Apache-2.0
|
|
363
371
|
metadata: {}
|
|
364
|
-
post_install_message:
|
|
372
|
+
post_install_message:
|
|
365
373
|
rdoc_options: []
|
|
366
374
|
require_paths:
|
|
367
375
|
- lib
|
|
@@ -376,8 +384,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
376
384
|
- !ruby/object:Gem::Version
|
|
377
385
|
version: '0'
|
|
378
386
|
requirements: []
|
|
379
|
-
rubygems_version: 3.
|
|
380
|
-
signing_key:
|
|
387
|
+
rubygems_version: 3.2.22
|
|
388
|
+
signing_key:
|
|
381
389
|
specification_version: 4
|
|
382
390
|
summary: An API Client Generator for Ruby in Ruby!
|
|
383
391
|
test_files: []
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%- assert_locals service -%>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<%- assert_locals service -%>
|
|
2
|
-
# GRPC transcoding helper methods for the <%= service.name %> REST API.
|
|
3
|
-
module GrpcTranscoding
|
|
4
|
-
<%- service.methods.each do |method| -%>
|
|
5
|
-
|
|
6
|
-
<%= indent_tail render(partial: "service/rest/grpc_transcoding/method/def", locals: { method: method }), 2 %>
|
|
7
|
-
<%- end %>
|
|
8
|
-
extend self
|
|
9
|
-
end
|