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.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +13 -0
  3. data/CHANGELOG.md +43 -0
  4. data/CODE_OF_CONDUCT.md +43 -0
  5. data/CONTRIBUTING.md +28 -0
  6. data/LICENSE +202 -0
  7. data/README.md +72 -0
  8. data/bin/gapic-generator +103 -0
  9. data/bin/protoc-gen-ruby_gapic +33 -0
  10. data/default-rubocop.yml +10 -0
  11. data/gem_templates/binary.erb +20 -0
  12. data/gem_templates/dockerfile.erb +39 -0
  13. data/gem_templates/entrypoint.erb +24 -0
  14. data/gem_templates/gapic_sh.erb +97 -0
  15. data/gem_templates/gemfile.erb +8 -0
  16. data/gem_templates/gemspec.erb +36 -0
  17. data/gem_templates/generator.erb +37 -0
  18. data/gem_templates/gitignore.erb +10 -0
  19. data/gem_templates/rakefile.erb +29 -0
  20. data/gem_templates/readme.erb +69 -0
  21. data/gem_templates/rubocop.erb +16 -0
  22. data/gem_templates/shared/_header.erb +4 -0
  23. data/gem_templates/shared/_license.erb +13 -0
  24. data/gem_templates/shared/_warning.erb +1 -0
  25. data/gem_templates/test_generator.erb +13 -0
  26. data/gem_templates/test_helper.erb +25 -0
  27. data/gem_templates/version.erb +10 -0
  28. data/lib/gapic/file_formatter.rb +62 -0
  29. data/lib/gapic/formatting_utils.rb +109 -0
  30. data/lib/gapic/gem_builder.rb +98 -0
  31. data/lib/gapic/generator.rb +30 -0
  32. data/lib/gapic/generator/version.rb +21 -0
  33. data/lib/gapic/generators/base_generator.rb +91 -0
  34. data/lib/gapic/generators/default_generator.rb +101 -0
  35. data/lib/gapic/grpc_service_config/method_config.rb +49 -0
  36. data/lib/gapic/grpc_service_config/parser.rb +218 -0
  37. data/lib/gapic/grpc_service_config/parsing_error.rb +25 -0
  38. data/lib/gapic/grpc_service_config/retry_policy.rb +51 -0
  39. data/lib/gapic/grpc_service_config/service_config.rb +42 -0
  40. data/lib/gapic/path_template.rb +35 -0
  41. data/lib/gapic/path_template/parser.rb +83 -0
  42. data/lib/gapic/path_template/segment.rb +67 -0
  43. data/lib/gapic/resource_lookup.rb +91 -0
  44. data/lib/gapic/runner.rb +76 -0
  45. data/lib/gapic/schema.rb +17 -0
  46. data/lib/gapic/schema/api.rb +264 -0
  47. data/lib/gapic/schema/loader.rb +269 -0
  48. data/lib/gapic/schema/wrappers.rb +717 -0
  49. data/lib/google/api/annotations.pb.rb +39 -0
  50. data/lib/google/api/client.pb.rb +43 -0
  51. data/lib/google/api/field_behavior.pb.rb +51 -0
  52. data/lib/google/api/http.pb.rb +60 -0
  53. data/lib/google/api/resource.pb.rb +80 -0
  54. data/lib/google/longrunning/operations.pb.rb +115 -0
  55. data/lib/google/protobuf/any.pb.rb +40 -0
  56. data/lib/google/protobuf/compiler/plugin.pb.rb +72 -0
  57. data/lib/google/protobuf/descriptor.pb.rb +359 -0
  58. data/lib/google/protobuf/empty.pb.rb +36 -0
  59. data/lib/google/rpc/status.pb.rb +46 -0
  60. data/templates/default/gem/_version.erb +2 -0
  61. data/templates/default/gem/changelog.erb +3 -0
  62. data/templates/default/gem/gemfile.erb +4 -0
  63. data/templates/default/gem/gemspec.erb +37 -0
  64. data/templates/default/gem/gitignore.erb +20 -0
  65. data/templates/default/gem/license.erb +22 -0
  66. data/templates/default/gem/rakefile.erb +27 -0
  67. data/templates/default/gem/readme.erb +24 -0
  68. data/templates/default/gem/rubocop.erb +59 -0
  69. data/templates/default/gem/version.erb +6 -0
  70. data/templates/default/gem/yardopts.erb +12 -0
  71. data/templates/default/helpers/default_helper.rb +50 -0
  72. data/templates/default/helpers/filepath_helper.rb +38 -0
  73. data/templates/default/helpers/namespace_helper.rb +44 -0
  74. data/templates/default/helpers/presenter_helper.rb +24 -0
  75. data/templates/default/helpers/presenters/enum_presenter.rb +35 -0
  76. data/templates/default/helpers/presenters/enum_value_presenter.rb +33 -0
  77. data/templates/default/helpers/presenters/field_presenter.rb +146 -0
  78. data/templates/default/helpers/presenters/file_presenter.rb +53 -0
  79. data/templates/default/helpers/presenters/gem_presenter.rb +140 -0
  80. data/templates/default/helpers/presenters/message_presenter.rb +66 -0
  81. data/templates/default/helpers/presenters/method_presenter.rb +293 -0
  82. data/templates/default/helpers/presenters/package_presenter.rb +65 -0
  83. data/templates/default/helpers/presenters/resource_presenter.rb +92 -0
  84. data/templates/default/helpers/presenters/sample_presenter.rb +74 -0
  85. data/templates/default/helpers/presenters/service_presenter.rb +276 -0
  86. data/templates/default/layouts/_ruby.erb +20 -0
  87. data/templates/default/package.erb +6 -0
  88. data/templates/default/proto_docs/_enum.erb +13 -0
  89. data/templates/default/proto_docs/_message.erb +23 -0
  90. data/templates/default/proto_docs/_proto_file.erb +9 -0
  91. data/templates/default/proto_docs/proto_file.erb +6 -0
  92. data/templates/default/proto_docs/readme.erb +5 -0
  93. data/templates/default/service.erb +8 -0
  94. data/templates/default/service/client.erb +6 -0
  95. data/templates/default/service/client/_client.erb +137 -0
  96. data/templates/default/service/client/_config.erb +155 -0
  97. data/templates/default/service/client/_credentials.erb +21 -0
  98. data/templates/default/service/client/_helpers.erb +9 -0
  99. data/templates/default/service/client/_operations.erb +88 -0
  100. data/templates/default/service/client/_paths.erb +8 -0
  101. data/templates/default/service/client/_requires.erb +1 -0
  102. data/templates/default/service/client/_resource.erb +6 -0
  103. data/templates/default/service/client/_self_configure.erb +9 -0
  104. data/templates/default/service/client/_self_configure_defaults.erb +22 -0
  105. data/templates/default/service/client/_self_configure_retry_policy.erb +15 -0
  106. data/templates/default/service/client/method/_def.erb +21 -0
  107. data/templates/default/service/client/method/def/_options_defaults.erb +29 -0
  108. data/templates/default/service/client/method/def/_request.erb +6 -0
  109. data/templates/default/service/client/method/def/_request_normal.erb +4 -0
  110. data/templates/default/service/client/method/def/_request_streaming.erb +9 -0
  111. data/templates/default/service/client/method/def/_rescue.erb +1 -0
  112. data/templates/default/service/client/method/def/_response.erb +6 -0
  113. data/templates/default/service/client/method/def/_response_normal.erb +8 -0
  114. data/templates/default/service/client/method/def/_response_paged.erb +9 -0
  115. data/templates/default/service/client/method/docs/_error.erb +2 -0
  116. data/templates/default/service/client/method/docs/_request.erb +6 -0
  117. data/templates/default/service/client/method/docs/_request_field.erb +7 -0
  118. data/templates/default/service/client/method/docs/_request_normal.erb +20 -0
  119. data/templates/default/service/client/method/docs/_request_streaming.erb +5 -0
  120. data/templates/default/service/client/method/docs/_response.erb +6 -0
  121. data/templates/default/service/client/method/docs/_sample.erb +20 -0
  122. data/templates/default/service/client/method/docs/_sample_response.erb +24 -0
  123. data/templates/default/service/client/method/docs/_samples.erb +6 -0
  124. data/templates/default/service/client/method/docs/request_field/_arg.erb +10 -0
  125. data/templates/default/service/client/method/docs/request_field/_hash.erb +19 -0
  126. data/templates/default/service/client/method/docs/sample_response/_comment.erb +5 -0
  127. data/templates/default/service/client/method/docs/sample_response/_define.erb +2 -0
  128. data/templates/default/service/client/method/docs/sample_response/_loop.erb +12 -0
  129. data/templates/default/service/client/method/docs/sample_response/_print.erb +2 -0
  130. data/templates/default/service/client/method/docs/sample_response/_write_file.erb +2 -0
  131. data/templates/default/service/client/resource/_def.erb +6 -0
  132. data/templates/default/service/client/resource/_doc.erb +8 -0
  133. data/templates/default/service/client/resource/_multi.erb +28 -0
  134. data/templates/default/service/client/resource/_single.erb +11 -0
  135. data/templates/default/service/credentials.erb +6 -0
  136. data/templates/default/service/operations.erb +6 -0
  137. data/templates/default/service/paths.erb +6 -0
  138. data/templates/default/service/test/client.erb +24 -0
  139. data/templates/default/service/test/client_operations.erb +24 -0
  140. data/templates/default/service/test/method/_assert_response.erb +11 -0
  141. data/templates/default/service/test/method/_bidi.erb +100 -0
  142. data/templates/default/service/test/method/_client.erb +84 -0
  143. data/templates/default/service/test/method/_normal.erb +69 -0
  144. data/templates/default/service/test/method/_server.erb +85 -0
  145. data/templates/default/service/test/method/_setup.erb +21 -0
  146. data/templates/default/service/test/smoke.erb +12 -0
  147. data/templates/default/shared/_header.erb +4 -0
  148. data/templates/default/shared/_license.erb +21 -0
  149. data/templates/default/shared/_warning.erb +1 -0
  150. metadata +351 -0
@@ -0,0 +1,8 @@
1
+ <%- assert_locals service -%>
2
+ # Path helper methods for the <%= service.name %> API.
3
+ module Paths
4
+ <%- service.references.each do |resource| -%>
5
+ <%= indent render(partial: "service/client/resource", locals: { resource: resource }), 2 %>
6
+
7
+ <%- end %>
8
+ end
@@ -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,4 @@
1
+ <%- assert_locals method -%>
2
+ raise ArgumentError, "request must be provided" if request.nil?
3
+
4
+ request = Gapic::Protobuf.coerce request, to: <%= method.request_type %>
@@ -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,2 @@
1
+ <%- assert_locals method -%>
2
+ # @raise [GRPC::BadStatus] if the RPC is aborted.
@@ -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,6 @@
1
+ <%- assert_locals method -%>
2
+ <%- method.samples.each do |sample| -%>
3
+ # @example <%= sample.description %>
4
+ <%= indent render(partial: "service/client/method/docs/sample", locals: { method: method, sample: sample }), "# " %>
5
+ #
6
+ <%- 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,5 @@
1
+ <%- assert_locals values -%>
2
+
3
+ <%- Array(values).each do |comment| -%>
4
+ # <%= comment %>
5
+ <%- end -%>
@@ -0,0 +1,2 @@
1
+ <%- assert_locals values -%>
2
+ <%= values.gsub "$resp", "response" %>
@@ -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,2 @@
1
+ <%- assert_locals values -%>
2
+ puts "<%= values[0].gsub("%s", "\#{%s}") % values[1..-1].map { |value| value.gsub("$resp", "response") } %>"
@@ -0,0 +1,2 @@
1
+ <%- assert_locals values -%>
2
+ File.write <%= values["file_name"].inspect %>, <%= values["contents"].gsub("$resp", "response") %>
@@ -0,0 +1,6 @@
1
+ <%- assert_locals pattern -%>
2
+ <%- pattern.arguments[0...-1].each do |arg| -%>
3
+ raise ArgumentError, "<%= arg %> cannot contain /" if <%= arg %>.to_s.include? "/"
4
+ <%- end -%>
5
+
6
+ "<%= pattern.path_string %>"
@@ -0,0 +1,8 @@
1
+ <%- assert_locals pattern -%>
2
+ The resource will be in the following format:
3
+
4
+ `<%= pattern.template %>`
5
+
6
+ <%- pattern.arguments.each do |arg| -%>
7
+ @param <%= arg %> [String]
8
+ <%- 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,6 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "service/client/credentials",
3
+ layout: "layouts/ruby",
4
+ locals: { service: service,
5
+ namespace: service.proto_service_name_full }
6
+ %>
@@ -0,0 +1,6 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "service/client/operations",
3
+ layout: "layouts/ruby",
4
+ locals: { service: service,
5
+ namespace: service.proto_service_name_full }
6
+ %>
@@ -0,0 +1,6 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "service/client/paths",
3
+ layout: "layouts/ruby",
4
+ locals: { service: service,
5
+ namespace: service.proto_service_name_full }
6
+ %>
@@ -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