gapic-generator 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +13 -0
- data/CHANGELOG.md +26 -0
- data/CODE_OF_CONDUCT.md +43 -0
- data/CONTRIBUTING.md +28 -0
- data/LICENSE +202 -0
- data/README.md +72 -0
- data/bin/gapic-generator +103 -0
- data/bin/protoc-gen-ruby_gapic +33 -0
- data/default-rubocop.yml +10 -0
- data/gem_templates/binary.erb +20 -0
- data/gem_templates/dockerfile.erb +39 -0
- data/gem_templates/entrypoint.erb +24 -0
- data/gem_templates/gapic_sh.erb +97 -0
- data/gem_templates/gemfile.erb +8 -0
- data/gem_templates/gemspec.erb +36 -0
- data/gem_templates/generator.erb +37 -0
- data/gem_templates/gitignore.erb +10 -0
- data/gem_templates/rakefile.erb +29 -0
- data/gem_templates/readme.erb +69 -0
- data/gem_templates/rubocop.erb +16 -0
- data/gem_templates/shared/_header.erb +4 -0
- data/gem_templates/shared/_license.erb +13 -0
- data/gem_templates/shared/_warning.erb +1 -0
- data/gem_templates/test_generator.erb +13 -0
- data/gem_templates/test_helper.erb +25 -0
- data/gem_templates/version.erb +10 -0
- data/lib/gapic/file_formatter.rb +62 -0
- data/lib/gapic/gem_builder.rb +98 -0
- data/lib/gapic/generator.rb +30 -0
- data/lib/gapic/generator/version.rb +21 -0
- data/lib/gapic/generators/base_generator.rb +91 -0
- data/lib/gapic/generators/default_generator.rb +101 -0
- data/lib/gapic/grpc_service_config/method_config.rb +49 -0
- data/lib/gapic/grpc_service_config/parser.rb +196 -0
- data/lib/gapic/grpc_service_config/parsing_error.rb +25 -0
- data/lib/gapic/grpc_service_config/retry_policy.rb +51 -0
- data/lib/gapic/grpc_service_config/service_config.rb +42 -0
- data/lib/gapic/path_template.rb +35 -0
- data/lib/gapic/path_template/parser.rb +83 -0
- data/lib/gapic/path_template/segment.rb +67 -0
- data/lib/gapic/resource_lookup.rb +91 -0
- data/lib/gapic/runner.rb +76 -0
- data/lib/gapic/schema.rb +17 -0
- data/lib/gapic/schema/api.rb +264 -0
- data/lib/gapic/schema/loader.rb +269 -0
- data/lib/gapic/schema/wrappers.rb +718 -0
- data/lib/google/api/annotations.pb.rb +39 -0
- data/lib/google/api/client.pb.rb +43 -0
- data/lib/google/api/field_behavior.pb.rb +51 -0
- data/lib/google/api/http.pb.rb +60 -0
- data/lib/google/api/resource.pb.rb +80 -0
- data/lib/google/longrunning/operations.pb.rb +115 -0
- data/lib/google/protobuf/any.pb.rb +40 -0
- data/lib/google/protobuf/compiler/plugin.pb.rb +72 -0
- data/lib/google/protobuf/descriptor.pb.rb +359 -0
- data/lib/google/protobuf/empty.pb.rb +36 -0
- data/lib/google/rpc/status.pb.rb +46 -0
- data/templates/default/gem/_version.erb +2 -0
- data/templates/default/gem/changelog.erb +3 -0
- data/templates/default/gem/gemfile.erb +4 -0
- data/templates/default/gem/gemspec.erb +37 -0
- data/templates/default/gem/gitignore.erb +18 -0
- data/templates/default/gem/license.erb +22 -0
- data/templates/default/gem/rakefile.erb +27 -0
- data/templates/default/gem/readme.erb +24 -0
- data/templates/default/gem/rubocop.erb +59 -0
- data/templates/default/gem/version.erb +6 -0
- data/templates/default/gem/yardopts.erb +12 -0
- data/templates/default/helpers/default_helper.rb +45 -0
- data/templates/default/helpers/filepath_helper.rb +38 -0
- data/templates/default/helpers/namespace_helper.rb +44 -0
- data/templates/default/helpers/presenter_helper.rb +24 -0
- data/templates/default/helpers/presenters/enum_presenter.rb +35 -0
- data/templates/default/helpers/presenters/enum_value_presenter.rb +33 -0
- data/templates/default/helpers/presenters/field_presenter.rb +146 -0
- data/templates/default/helpers/presenters/file_presenter.rb +53 -0
- data/templates/default/helpers/presenters/gem_presenter.rb +140 -0
- data/templates/default/helpers/presenters/message_presenter.rb +66 -0
- data/templates/default/helpers/presenters/method_presenter.rb +293 -0
- data/templates/default/helpers/presenters/package_presenter.rb +65 -0
- data/templates/default/helpers/presenters/resource_presenter.rb +92 -0
- data/templates/default/helpers/presenters/sample_presenter.rb +74 -0
- data/templates/default/helpers/presenters/service_presenter.rb +276 -0
- data/templates/default/layouts/_ruby.erb +20 -0
- data/templates/default/package.erb +6 -0
- data/templates/default/proto_docs/_enum.erb +13 -0
- data/templates/default/proto_docs/_message.erb +23 -0
- data/templates/default/proto_docs/_proto_file.erb +9 -0
- data/templates/default/proto_docs/proto_file.erb +6 -0
- data/templates/default/proto_docs/readme.erb +5 -0
- data/templates/default/service.erb +8 -0
- data/templates/default/service/client.erb +6 -0
- data/templates/default/service/client/_client.erb +137 -0
- data/templates/default/service/client/_config.erb +155 -0
- data/templates/default/service/client/_credentials.erb +21 -0
- data/templates/default/service/client/_helpers.erb +9 -0
- data/templates/default/service/client/_operations.erb +88 -0
- data/templates/default/service/client/_paths.erb +8 -0
- data/templates/default/service/client/_requires.erb +1 -0
- data/templates/default/service/client/_resource.erb +6 -0
- data/templates/default/service/client/_self_configure.erb +29 -0
- data/templates/default/service/client/_self_configure_retry_policy.erb +15 -0
- data/templates/default/service/client/method/_def.erb +21 -0
- data/templates/default/service/client/method/def/_options_defaults.erb +29 -0
- data/templates/default/service/client/method/def/_request.erb +6 -0
- data/templates/default/service/client/method/def/_request_normal.erb +4 -0
- data/templates/default/service/client/method/def/_request_streaming.erb +9 -0
- data/templates/default/service/client/method/def/_rescue.erb +1 -0
- data/templates/default/service/client/method/def/_response.erb +6 -0
- data/templates/default/service/client/method/def/_response_normal.erb +8 -0
- data/templates/default/service/client/method/def/_response_paged.erb +9 -0
- data/templates/default/service/client/method/docs/_error.erb +2 -0
- data/templates/default/service/client/method/docs/_request.erb +6 -0
- data/templates/default/service/client/method/docs/_request_field.erb +7 -0
- data/templates/default/service/client/method/docs/_request_normal.erb +20 -0
- data/templates/default/service/client/method/docs/_request_streaming.erb +5 -0
- data/templates/default/service/client/method/docs/_response.erb +6 -0
- data/templates/default/service/client/method/docs/_sample.erb +20 -0
- data/templates/default/service/client/method/docs/_sample_response.erb +24 -0
- data/templates/default/service/client/method/docs/_samples.erb +6 -0
- data/templates/default/service/client/method/docs/request_field/_arg.erb +10 -0
- data/templates/default/service/client/method/docs/request_field/_hash.erb +19 -0
- data/templates/default/service/client/method/docs/sample_response/_comment.erb +5 -0
- data/templates/default/service/client/method/docs/sample_response/_define.erb +2 -0
- data/templates/default/service/client/method/docs/sample_response/_loop.erb +12 -0
- data/templates/default/service/client/method/docs/sample_response/_print.erb +2 -0
- data/templates/default/service/client/method/docs/sample_response/_write_file.erb +2 -0
- data/templates/default/service/client/resource/_def.erb +6 -0
- data/templates/default/service/client/resource/_doc.erb +8 -0
- data/templates/default/service/client/resource/_multi.erb +28 -0
- data/templates/default/service/client/resource/_single.erb +11 -0
- data/templates/default/service/credentials.erb +6 -0
- data/templates/default/service/operations.erb +6 -0
- data/templates/default/service/paths.erb +6 -0
- data/templates/default/service/test/client.erb +24 -0
- data/templates/default/service/test/client_operations.erb +24 -0
- data/templates/default/service/test/method/_assert_response.erb +11 -0
- data/templates/default/service/test/method/_bidi.erb +100 -0
- data/templates/default/service/test/method/_client.erb +84 -0
- data/templates/default/service/test/method/_normal.erb +69 -0
- data/templates/default/service/test/method/_server.erb +85 -0
- data/templates/default/service/test/method/_setup.erb +21 -0
- data/templates/default/service/test/smoke.erb +12 -0
- data/templates/default/shared/_header.erb +4 -0
- data/templates/default/shared/_license.erb +21 -0
- data/templates/default/shared/_warning.erb +1 -0
- metadata +349 -0
@@ -0,0 +1 @@
|
|
1
|
+
<%- assert_locals service -%>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%- assert_locals resource -%>
|
2
|
+
<%- if resource.patterns.count == 1 -%>
|
3
|
+
<%= render partial: "service/client/resource/single", locals: { resource: resource } %>
|
4
|
+
<%- else -%>
|
5
|
+
<%= render partial: "service/client/resource/multi", locals: { resource: resource } %>
|
6
|
+
<%- end -%>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<%- assert_locals service -%>
|
2
|
+
<%- method_service ||= service -%>
|
3
|
+
@configure ||= begin
|
4
|
+
default_config = <%= service.client_name %>::Configuration.new
|
5
|
+
<%- if service.grpc_service_config && !service.grpc_service_config.empty? -%>
|
6
|
+
|
7
|
+
<%- if service.grpc_service_config.timeout_seconds -%>
|
8
|
+
default_config.timeout = <%= service.grpc_service_config.timeout_seconds %>
|
9
|
+
<%- end -%>
|
10
|
+
<%- if service.grpc_service_config.retry_policy -%>
|
11
|
+
default_config.retry_policy = <%= indent_tail render(partial: "service/client/self_configure_retry_policy", locals: { retry_policy: service.grpc_service_config.retry_policy }), 2 %>
|
12
|
+
<%- end -%>
|
13
|
+
<%- end -%>
|
14
|
+
<%- method_service.methods.each do |method| -%>
|
15
|
+
<%- if method.grpc_service_config && !method.grpc_service_config.empty? -%>
|
16
|
+
|
17
|
+
<%- if method.grpc_service_config.timeout_seconds -%>
|
18
|
+
default_config.rpcs.<%= method.name %>.timeout = <%= method.grpc_service_config.timeout_seconds %>
|
19
|
+
<%- end -%>
|
20
|
+
<%- if method.grpc_service_config.retry_policy -%>
|
21
|
+
default_config.rpcs.<%= method.name %>.retry_policy =<%= indent_tail render(partial: "service/client/self_configure_retry_policy", locals: { retry_policy: method.grpc_service_config.retry_policy }), 2 %>
|
22
|
+
<%- end -%>
|
23
|
+
<%- end -%>
|
24
|
+
<%- end -%>
|
25
|
+
|
26
|
+
default_config
|
27
|
+
end
|
28
|
+
yield @configure if block_given?
|
29
|
+
@configure
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%- assert_locals retry_policy -%>
|
2
|
+
{
|
3
|
+
<%- if retry_policy.initial_delay_seconds -%>
|
4
|
+
initial_delay: <%= retry_policy.initial_delay_seconds %>,
|
5
|
+
<%- end -%>
|
6
|
+
<%- if retry_policy.max_delay_seconds -%>
|
7
|
+
max_delay: <%= retry_policy.max_delay_seconds %>,
|
8
|
+
<%- end -%>
|
9
|
+
<%- if retry_policy.multiplier -%>
|
10
|
+
multiplier: <%= retry_policy.multiplier %>,
|
11
|
+
<%- end-%>
|
12
|
+
<%- if retry_policy.status_codes -%>
|
13
|
+
retry_codes: <%= retry_policy.status_codes %>
|
14
|
+
<%- end -%>
|
15
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
##
|
3
|
+
<%- if method.doc_description -%>
|
4
|
+
<%= indent method.doc_description, "# " %>
|
5
|
+
#
|
6
|
+
<%- end -%>
|
7
|
+
<%= render partial: "service/client/method/docs/request", locals: { method: method } -%>
|
8
|
+
#
|
9
|
+
<%= render partial: "service/client/method/docs/response", locals: { method: method } -%>
|
10
|
+
#
|
11
|
+
<%= render partial: "service/client/method/docs/error", locals: { method: method } -%>
|
12
|
+
#
|
13
|
+
<%= render partial: "service/client/method/docs/samples", locals: { method: method } -%>
|
14
|
+
def <%= method.name %> request, options = nil
|
15
|
+
<%= indent render(partial: "service/client/method/def/request", locals: { method: method }), 2 %>
|
16
|
+
|
17
|
+
<%= indent render(partial: "service/client/method/def/options_defaults", locals: { method: method }), 2 %>
|
18
|
+
|
19
|
+
<%= indent render(partial: "service/client/method/def/response", locals: { method: method }), 2 %>
|
20
|
+
<%= render partial: "service/client/method/def/rescue", locals: { method: method } -%>
|
21
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
# Converts hash and nil to an options object
|
3
|
+
options = Gapic::CallOptions.new options.to_h if options.respond_to? :to_h
|
4
|
+
|
5
|
+
# Customize the options with defaults
|
6
|
+
metadata = @config.rpcs.<%= method.name %>.metadata.to_h
|
7
|
+
|
8
|
+
# Set x-goog-api-client and x-goog-user-project headers
|
9
|
+
metadata[:"x-goog-api-client"] ||= Gapic::Headers.x_goog_api_client \
|
10
|
+
lib_name: @config.lib_name, lib_version: @config.lib_version,
|
11
|
+
gapic_version: ::<%= method.service.gem.version_name_full %>
|
12
|
+
metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
|
13
|
+
<%- if method.routing_params? && !method.client_streaming? -%>
|
14
|
+
|
15
|
+
header_params = {
|
16
|
+
<%- method.routing_params.each_with_index do |routing_param, index| -%>
|
17
|
+
<%- comma = index == method.routing_params.count - 1 ? "" : "," -%>
|
18
|
+
"<%= routing_param %>" => request.<%= routing_param %><%= comma %>
|
19
|
+
<%- end -%>
|
20
|
+
}
|
21
|
+
request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
|
22
|
+
metadata[:"x-goog-request-params"] ||= request_params_header
|
23
|
+
<%- end -%>
|
24
|
+
|
25
|
+
options.apply_defaults timeout: @config.rpcs.<%= method.name %>.timeout,
|
26
|
+
metadata: metadata,
|
27
|
+
retry_policy: @config.rpcs.<%= method.name %>.retry_policy
|
28
|
+
options.apply_defaults metadata: @config.metadata,
|
29
|
+
retry_policy: @config.retry_policy
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- if method.client_streaming? -%>
|
3
|
+
<%= render partial: "service/client/method/def/request_streaming", locals: { method: method } -%>
|
4
|
+
<%- else -%>
|
5
|
+
<%= render partial: "service/client/method/def/request_normal", locals: { method: method } -%>
|
6
|
+
<%- end -%>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
unless request.is_a? Enumerable
|
3
|
+
raise ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum
|
4
|
+
request = request.to_enum
|
5
|
+
end
|
6
|
+
|
7
|
+
request = request.lazy.map do |req|
|
8
|
+
Gapic::Protobuf.coerce req, to: <%= method.request_type %>
|
9
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%- assert_locals method -%>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- if method.paged? -%>
|
3
|
+
<%= render partial: "service/client/method/def/response_paged", locals: { method: method } -%>
|
4
|
+
<%- else -%>
|
5
|
+
<%= render partial: "service/client/method/def/response_normal", locals: { method: method } -%>
|
6
|
+
<%- end -%>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
@<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
|
3
|
+
<%- if method.lro? -%>
|
4
|
+
response = Gapic::Operation.new response, <%= method.service.lro_client_ivar %>
|
5
|
+
<%- end -%>
|
6
|
+
yield response, operation if block_given?
|
7
|
+
return response
|
8
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
@<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
|
3
|
+
<%- if method.lro? -%>
|
4
|
+
wrap_lro_operation = ->(op_response) { Gapic::Operation.new op_response, <%= method.service.lro_client_ivar %> }
|
5
|
+
<%- end -%>
|
6
|
+
response = Gapic::PagedEnumerable.new @<%= method.service.stub_name %>, :<%= method.name %>, request, response, operation, options<%- if method.lro? -%>, format_resource: wrap_lro_operation<%- end -%>
|
7
|
+
yield response, operation if block_given?
|
8
|
+
return response
|
9
|
+
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
<%- if method.client_streaming? -%>
|
3
|
+
<%= render partial: "service/client/method/docs/request_streaming", locals: { method: method } -%>
|
4
|
+
<%- else -%>
|
5
|
+
<%= render partial: "service/client/method/docs/request_normal", locals: { method: method } -%>
|
6
|
+
<%- end -%>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%- assert_locals field -%>
|
2
|
+
<%- _key, value = field -%>
|
3
|
+
<%- if value.is_a? Hash -%>
|
4
|
+
<%= render partial: "service/client/method/docs/request_field/hash", locals: { field: field, comma: false } -%>
|
5
|
+
<%- else -%>
|
6
|
+
<%= render partial: "service/client/method/docs/request_field/arg", locals: { field: field } -%>
|
7
|
+
<%- end -%>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
# @overload <%= method.name %>(request, options = nil)
|
3
|
+
# @param request [<%= method.request_type %> | Hash]
|
4
|
+
<%- if method.doc_description -%>
|
5
|
+
<%= indent method.doc_description, "# " %>
|
6
|
+
<%- end -%>
|
7
|
+
# @param options [Gapic::CallOptions, Hash]
|
8
|
+
# Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
|
9
|
+
<%-if method.arguments.any?-%>
|
10
|
+
#
|
11
|
+
<%- arg_list = method.arguments.map { |arg| "#{arg.name}: nil"}.join ", " -%>
|
12
|
+
# @overload <%= method.name %>(<%= arg_list %>)
|
13
|
+
<%- method.arguments.each do |arg| -%>
|
14
|
+
# @param <%= arg.name %> [<%= arg.doc_types %>]
|
15
|
+
<%- if arg.doc_description -%>
|
16
|
+
<%= indent arg.doc_description, "# " %>
|
17
|
+
<%- end -%>
|
18
|
+
<%- end -%>
|
19
|
+
<%- end -%>
|
20
|
+
#
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
# @param request [Gapic::StreamInput, Enumerable<<%= method.request_type %> | Hash>]
|
3
|
+
# An enumerable of {<%= method.request_type %>} instances.
|
4
|
+
# @param options [Gapic::CallOptions, Hash]
|
5
|
+
# Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<%- assert_locals method -%>
|
2
|
+
# @yield [response, operation] Access the result along with the RPC operation
|
3
|
+
# @yieldparam response [<%= method.doc_response_type %>]
|
4
|
+
# @yieldparam operation [GRPC::ActiveCall::Operation]
|
5
|
+
#
|
6
|
+
# @return [<%= method.doc_response_type %>]
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%- assert_locals method, sample -%>
|
2
|
+
require "<%= method.service.service_require %>"
|
3
|
+
|
4
|
+
client = <%= method.service.client_name_full %>.new
|
5
|
+
<%- if sample.input_parameters.any? -%>
|
6
|
+
|
7
|
+
<%- end -%>
|
8
|
+
<%- sample.input_parameters.each do |field| -%>
|
9
|
+
<%- if field.value_is_file -%>
|
10
|
+
<%= field.input_parameter %> = File.read <%= field.value %>
|
11
|
+
<%- else -%>
|
12
|
+
<%= field.input_parameter %> = <%= field.value %>
|
13
|
+
<%- end -%>
|
14
|
+
<%- end -%>
|
15
|
+
|
16
|
+
<%- sample.fields.each do |field| -%>
|
17
|
+
<%= render partial: "service/client/method/docs/request_field", locals: { field: field } -%>
|
18
|
+
<%- end -%>
|
19
|
+
|
20
|
+
<%= render partial: "service/client/method/docs/sample_response", locals: { method: method, sample: sample } -%>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%- assert_locals method, sample -%>
|
2
|
+
<%- if method.server_streaming? || method.paged? -%>
|
3
|
+
responses = client.<%= method.name %> <%= sample.kwargs %>
|
4
|
+
|
5
|
+
responses.each do |response|
|
6
|
+
<%- if method.lro? -%>
|
7
|
+
# Wait until the long running operation is done
|
8
|
+
response.wait_until_done!
|
9
|
+
<%- end -%>
|
10
|
+
<%- sample.response_raw.each do |resp_hash| -%>
|
11
|
+
<%= indent render(partial: "service/client/method/docs/sample_response/#{resp_hash.keys.first}", locals: { values: resp_hash.values.first }), " " %>
|
12
|
+
<%- end -%>
|
13
|
+
end
|
14
|
+
<%- else -%>
|
15
|
+
response = client.<%= method.name %> <%= sample.kwargs %>
|
16
|
+
<%- if method.lro? -%>
|
17
|
+
|
18
|
+
# Wait until the long running operation is done
|
19
|
+
response.wait_until_done!
|
20
|
+
<%- end -%>
|
21
|
+
<%- sample.response_raw.each do |resp_hash| -%>
|
22
|
+
<%= render partial: "service/client/method/docs/sample_response/#{resp_hash.keys.first}", locals: { values: resp_hash.values.first } -%>
|
23
|
+
<%- end -%>
|
24
|
+
<%- end -%>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%- assert_locals field -%>
|
2
|
+
<%- key, value = field -%>
|
3
|
+
<%- if value.comment -%>
|
4
|
+
<%= indent value.comment, "# " %>
|
5
|
+
<%- end -%>
|
6
|
+
<%- if value.value_is_file && !value.input_parameter -%>
|
7
|
+
<%= key %> = File.read <%= value.value %>
|
8
|
+
<%- else -%>
|
9
|
+
<%= key %> = <%= value.input_parameter || value.value %>
|
10
|
+
<%- end -%>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%- assert_locals field, comma -%>
|
2
|
+
<%- key, value = field -%>
|
3
|
+
<%- if value.is_a? Hash -%>
|
4
|
+
<%= key %> = {
|
5
|
+
<%- value.each_with_index do |nested_field, index| -%>
|
6
|
+
<%- nested_comma = index != value.count - 1 -%>
|
7
|
+
<%= indent render(partial: "service/client/method/docs/request_field/hash", locals: { field: nested_field, comma: nested_comma }), " " %>
|
8
|
+
<%- end -%>
|
9
|
+
}<%= "," if comma %>
|
10
|
+
<%- else -%>
|
11
|
+
<%- if value.comment -%>
|
12
|
+
<%= indent value.comment, "# " %>
|
13
|
+
<%- end -%>
|
14
|
+
<%- if value.value_is_file && !value.input_parameter -%>
|
15
|
+
<%= key %>: File.read(<%= value.value %>)<%= "," if comma %>
|
16
|
+
<%- else -%>
|
17
|
+
<%= key %>: <%= value.input_parameter || value.value %><%= "," if comma %>
|
18
|
+
<%- end -%>
|
19
|
+
<%- end -%>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%- assert_locals values -%>
|
2
|
+
<%- if values["map"] -%>
|
3
|
+
<%= values["map"].gsub("$resp", "response") %>.each do |<%= values["key"] %>, <%= values["value"] %>|
|
4
|
+
<%- elsif values["variable"] -%>
|
5
|
+
<%= values["collection"].gsub("$resp", "response") %>.each do |<%= values["variable"] %>|
|
6
|
+
<%- else -%>
|
7
|
+
<%= values["collection"].gsub("$resp", "response") %>.each do |<%= values["key"] %>, <%= values["value"] %>|
|
8
|
+
<%- end -%>
|
9
|
+
<%- values["body"].each do |b| -%>
|
10
|
+
<%= indent render(partial: "service/client/method/docs/sample_response/#{b.keys.first}", locals: { values: b.values.first }), " " %>
|
11
|
+
<%- end -%>
|
12
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<%- assert_locals resource -%>
|
2
|
+
##
|
3
|
+
# Create a fully-qualified <%= resource.name %> resource string.
|
4
|
+
#
|
5
|
+
<%- resource.patterns.each do |pattern| -%>
|
6
|
+
<%- args_doc_sig = pattern.arguments.map { |arg| "#{arg}:" }.join ", " -%>
|
7
|
+
# @overload <%= resource.path_helper %>(<%= args_doc_sig %>)
|
8
|
+
<%= indent render(partial: "service/client/resource/doc", locals: { pattern: pattern }), "# " %>
|
9
|
+
#
|
10
|
+
<%- end -%>
|
11
|
+
# @return [String]
|
12
|
+
def <%= resource.path_helper %> **args
|
13
|
+
resources = {
|
14
|
+
<%- last_pattern_index = resource.patterns.count - 1 -%>
|
15
|
+
<%- resource.patterns.each_with_index do |pattern, index| -%>
|
16
|
+
<%- comma = last_pattern_index == index ? "" : "," -%>
|
17
|
+
<%- args_key = pattern.arguments.sort.join(":").inspect -%>
|
18
|
+
<%- args_sig = pattern.arguments.map { |arg| "#{arg}:" }.join ", " -%>
|
19
|
+
<%= args_key %> => (proc do |<%= args_sig %>|
|
20
|
+
<%= indent render(partial: "service/client/resource/def", locals: { pattern: pattern }), 6 %>
|
21
|
+
end)<%= comma %>
|
22
|
+
<%- end -%>
|
23
|
+
}
|
24
|
+
|
25
|
+
resource = resources[args.keys.sort.join(":")]
|
26
|
+
raise ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
|
27
|
+
resource.call(**args)
|
28
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%- assert_locals resource -%>
|
2
|
+
##
|
3
|
+
# Create a fully-qualified <%= resource.name %> resource string.
|
4
|
+
#
|
5
|
+
<%= indent render(partial: "service/client/resource/doc", locals: { pattern: resource.patterns.first }), "# " %>
|
6
|
+
#
|
7
|
+
# @return [String]
|
8
|
+
<%- args = resource.patterns.first.arguments.map { |arg| "#{arg}:" }.join ", " -%>
|
9
|
+
def <%= resource.path_helper %> <%= args %>
|
10
|
+
<%= indent render(partial: "service/client/resource/def", locals: { pattern: resource.patterns.first }), 2 %>
|
11
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%- assert_locals service -%>
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
<%= render partial: "shared/license" %>
|
5
|
+
require "simplecov"
|
6
|
+
require "minitest/autorun"
|
7
|
+
|
8
|
+
require "gapic/grpc/service_stub"
|
9
|
+
|
10
|
+
require "<%= service.proto_service_require %>"
|
11
|
+
require "<%= service.proto_services_require %>"
|
12
|
+
require "<%= service.service_require %>"
|
13
|
+
|
14
|
+
class <%= service.client_name_full %>Test < Minitest::Test
|
15
|
+
<%= indent render(partial: "service/test/method/setup"), 2 %>
|
16
|
+
|
17
|
+
<% service.methods.each do |method| %>
|
18
|
+
<%= indent render(partial: "service/test/method/#{method.kind}",
|
19
|
+
locals: { method: method }), 2 %>
|
20
|
+
<% if method != service.methods.last %>
|
21
|
+
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
end
|