gapic-generator 0.1.4
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 +7 -0
- data/.yardopts +13 -0
- data/CHANGELOG.md +43 -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/formatting_utils.rb +109 -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 +218 -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 +717 -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 +20 -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 +50 -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 +9 -0
- data/templates/default/service/client/_self_configure_defaults.erb +22 -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 +351 -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,9 @@
|
|
|
1
|
+
<%- assert_locals service -%>
|
|
2
|
+
<%- method_service ||= service -%>
|
|
3
|
+
@configure ||= begin
|
|
4
|
+
default_config = <%= service.client_name %>::Configuration.new
|
|
5
|
+
<%= render partial: "service/client/self_configure_defaults", locals: {service: service} %>
|
|
6
|
+
default_config
|
|
7
|
+
end
|
|
8
|
+
yield @configure if block_given?
|
|
9
|
+
@configure
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%- assert_locals service -%>
|
|
2
|
+
<%- method_service ||= service -%>
|
|
3
|
+
<%- if service.grpc_service_config && !service.grpc_service_config.empty? -%>
|
|
4
|
+
|
|
5
|
+
<%- if service.grpc_service_config.timeout_seconds -%>
|
|
6
|
+
default_config.timeout = <%= format_number service.grpc_service_config.timeout_seconds %>
|
|
7
|
+
<%- end -%>
|
|
8
|
+
<%- if service.grpc_service_config.retry_policy -%>
|
|
9
|
+
default_config.retry_policy = <%= indent_tail render(partial: "service/client/self_configure_retry_policy", locals: { retry_policy: service.grpc_service_config.retry_policy }), 2 %>
|
|
10
|
+
<%- end -%>
|
|
11
|
+
<%- end -%>
|
|
12
|
+
<%- method_service.methods.each do |method| -%>
|
|
13
|
+
<%- if method.grpc_service_config && !method.grpc_service_config.empty? -%>
|
|
14
|
+
|
|
15
|
+
<%- if method.grpc_service_config.timeout_seconds -%>
|
|
16
|
+
default_config.rpcs.<%= method.name %>.timeout = <%= format_number method.grpc_service_config.timeout_seconds %>
|
|
17
|
+
<%- end -%>
|
|
18
|
+
<%- if method.grpc_service_config.retry_policy -%>
|
|
19
|
+
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 %>
|
|
20
|
+
<%- end -%>
|
|
21
|
+
<%- end -%>
|
|
22
|
+
<%- end -%>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<%- assert_locals retry_policy -%>
|
|
2
|
+
{
|
|
3
|
+
<%- if retry_policy.initial_delay_seconds -%>
|
|
4
|
+
initial_delay: <%= format_number retry_policy.initial_delay_seconds %>,
|
|
5
|
+
<%- end -%>
|
|
6
|
+
<%- if retry_policy.max_delay_seconds -%>
|
|
7
|
+
max_delay: <%= format_number retry_policy.max_delay_seconds %>,
|
|
8
|
+
<%- end -%>
|
|
9
|
+
<%- if retry_policy.multiplier -%>
|
|
10
|
+
multiplier: <%= format_number 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
|