gapic-generator 0.10.1 → 0.45.1

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 (257) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +333 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/README.md +71 -37
  5. data/bin/protoc-gen-ruby_gapic +2 -2
  6. data/lib/gapic/file_formatter.rb +23 -19
  7. data/lib/gapic/formatting_utils.rb +22 -9
  8. data/lib/gapic/gem_builder.rb +15 -17
  9. data/lib/gapic/generator/version.rb +1 -1
  10. data/lib/gapic/generators/base_generator.rb +6 -4
  11. data/lib/gapic/generators/default_generator.rb +70 -32
  12. data/lib/gapic/generators/default_generator_parameters.rb +11 -3
  13. data/lib/gapic/grpc_service_config/{service_config.rb → config.rb} +2 -2
  14. data/lib/gapic/grpc_service_config/parser.rb +10 -10
  15. data/lib/gapic/model/api_metadata.rb +173 -0
  16. data/lib/gapic/model/method/http_annotation.rb +221 -0
  17. data/lib/gapic/model/method/lro.rb +163 -0
  18. data/lib/gapic/model/method/routing.rb +248 -0
  19. data/lib/gapic/model/mixins.rb +247 -0
  20. data/lib/gapic/model/model_error.rb +26 -0
  21. data/lib/gapic/model/service/nonstandard_lro_provider.rb +292 -0
  22. data/lib/gapic/model.rb +22 -0
  23. data/lib/gapic/package_snippets.rb +159 -0
  24. data/lib/gapic/path_pattern/parser.rb +11 -2
  25. data/lib/gapic/path_pattern/pattern.rb +64 -1
  26. data/lib/gapic/path_pattern/segment.rb +108 -13
  27. data/lib/gapic/presenters/enum_presenter.rb +14 -0
  28. data/lib/gapic/presenters/enum_value_presenter.rb +4 -1
  29. data/lib/gapic/presenters/field_presenter.rb +78 -21
  30. data/lib/gapic/presenters/gem_presenter.rb +140 -34
  31. data/lib/gapic/presenters/{service_config_presenter.rb → grpc_service_config_presenter.rb} +1 -1
  32. data/lib/gapic/presenters/message_presenter.rb +15 -0
  33. data/lib/gapic/presenters/method/http_binding_presenter.rb +128 -0
  34. data/lib/gapic/presenters/method/rest_pagination_info.rb +25 -16
  35. data/lib/gapic/presenters/method_presenter.rb +149 -35
  36. data/lib/gapic/presenters/method_rest_presenter.rb +79 -168
  37. data/lib/gapic/presenters/package_presenter.rb +63 -18
  38. data/lib/gapic/presenters/resource_presenter.rb +9 -3
  39. data/lib/gapic/presenters/service/lro_client_presenter.rb +90 -0
  40. data/lib/gapic/presenters/service/mixin_client_presenter.rb +89 -0
  41. data/lib/gapic/presenters/service/sub_client_presenter.rb +84 -0
  42. data/lib/gapic/presenters/service_presenter.rb +361 -27
  43. data/lib/gapic/presenters/service_rest_presenter.rb +247 -13
  44. data/lib/gapic/presenters/snippet/client_call_presenter.rb +82 -0
  45. data/lib/gapic/presenters/snippet/client_initialization_presenter.rb +87 -0
  46. data/lib/gapic/presenters/snippet/declaration_presenter.rb +91 -0
  47. data/lib/gapic/presenters/snippet/expression_presenter.rb +135 -0
  48. data/lib/gapic/presenters/snippet/iteration_presenter.rb +118 -0
  49. data/lib/gapic/presenters/snippet/parameter_presenter.rb +67 -0
  50. data/lib/gapic/presenters/snippet/request_initialization_presenters.rb +202 -0
  51. data/lib/gapic/presenters/snippet/response_handling_presenters.rb +329 -0
  52. data/lib/gapic/presenters/snippet/statement_presenter.rb +134 -0
  53. data/lib/gapic/presenters/snippet/type_presenter.rb +98 -0
  54. data/lib/gapic/presenters/snippet_presenter.rb +199 -9
  55. data/lib/gapic/presenters.rb +5 -1
  56. data/lib/gapic/runner.rb +1 -1
  57. data/lib/gapic/schema/api.rb +105 -5
  58. data/lib/gapic/schema/loader.rb +69 -21
  59. data/lib/gapic/schema/parameter_schema.rb +8 -8
  60. data/lib/gapic/schema/proto_tools.rb +193 -0
  61. data/lib/gapic/schema/request_param_parser.rb +5 -7
  62. data/lib/gapic/schema/service_config_parser.rb +152 -0
  63. data/lib/gapic/schema/wrappers.rb +309 -25
  64. data/lib/gapic/uri_template/parser.rb +15 -7
  65. data/lib/google/cloud/tools/snippetgen/configlanguage/v1/snippet_config_language_pb.rb +104 -0
  66. data/lib/google/cloud/tools/snippetgen/snippetindex/v1/snippet_index_pb.rb +58 -0
  67. data/lib/google/protobuf/compiler/plugin_pb.rb +47 -0
  68. data/templates/default/binding_override.text.erb +6 -0
  69. data/templates/default/gem/gemfile.text.erb +12 -0
  70. data/templates/default/gem/{gemspec.erb → gemspec.text.erb} +3 -11
  71. data/templates/default/gem/{readme.erb → readme.text.erb} +10 -6
  72. data/templates/default/gem/{rubocop.erb → rubocop.text.erb} +3 -0
  73. data/templates/default/gem/{test_helper.erb → test_helper.text.erb} +4 -2
  74. data/templates/default/gem/toys.text.erb +12 -0
  75. data/templates/default/gem/{yardopts.erb → yardopts.text.erb} +1 -1
  76. data/templates/default/helpers/default_helper.rb +33 -1
  77. data/templates/default/lib/_binding_override.text.erb +49 -0
  78. data/templates/default/lib/{_package.erb → _package.text.erb} +7 -6
  79. data/templates/default/lib/_package_rest.text.erb +24 -0
  80. data/templates/default/lib/{_service.erb → _service.text.erb} +14 -20
  81. data/templates/default/lib/package/_self_configure.text.erb +16 -0
  82. data/templates/default/lib/package/_self_configure_defaults.text.erb +13 -0
  83. data/templates/default/lib/package/self_configure/_binding_default.text.erb +15 -0
  84. data/templates/default/lib/rest/_rest.text.erb +46 -0
  85. data/templates/default/package_rest.text.erb +6 -0
  86. data/templates/default/proto_docs/_deprecated.text.erb +9 -0
  87. data/templates/default/proto_docs/{_enum.erb → _enum.text.erb} +1 -0
  88. data/templates/default/proto_docs/{_message.erb → _message.text.erb} +2 -0
  89. data/templates/default/service/client/{_client.erb → _client.text.erb} +77 -17
  90. data/templates/default/service/client/{_config.erb → _config.text.erb} +39 -8
  91. data/templates/default/service/client/_nonstandard_lro.text.erb +57 -0
  92. data/templates/default/service/client/{_operations.erb → _operations.text.erb} +24 -3
  93. data/templates/default/service/client/{_self_configure_defaults.erb → _self_configure_defaults.text.erb} +2 -2
  94. data/templates/default/service/client/method/{_def.erb → _def.text.erb} +2 -2
  95. data/templates/default/service/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +3 -9
  96. data/templates/default/service/client/method/def/_request_normal.text.erb +18 -0
  97. data/templates/default/service/client/method/def/_request_streaming.text.erb +23 -0
  98. data/templates/default/service/client/method/def/_response.text.erb +10 -0
  99. data/templates/default/service/client/method/def/_response_nonstandard_lro.text.erb +23 -0
  100. data/templates/default/service/client/method/def/_response_normal.text.erb +4 -0
  101. data/templates/default/service/client/method/def/{_response_normal.erb → _response_normal_lro.text.erb} +1 -3
  102. data/templates/default/service/client/method/def/{_response_paged.erb → _response_paged.text.erb} +1 -1
  103. data/templates/default/service/client/method/def/_routing_params.text.erb +36 -0
  104. data/templates/default/service/client/method/docs/{_request_normal.erb → _request_normal.text.erb} +1 -1
  105. data/templates/default/service/client/method/docs/_snippets.text.erb +6 -0
  106. data/templates/default/service/client/resource/_def.text.erb +7 -0
  107. data/templates/default/service/nonstandard_lro.text.erb +6 -0
  108. data/templates/default/service/rest/client/_client.text.erb +202 -0
  109. data/templates/default/service/rest/client/_config.text.erb +178 -0
  110. data/templates/default/service/rest/client/_operations.text.erb +124 -0
  111. data/templates/default/service/rest/client/method/{_def.erb → _def.text.erb} +7 -1
  112. data/templates/default/service/rest/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +8 -3
  113. data/templates/default/service/rest/client/method/def/_response.text.erb +12 -0
  114. data/templates/default/service/rest/client/method/def/_response_nonstandard_lro.text.erb +24 -0
  115. data/templates/default/service/rest/client/method/def/_response_normal.text.erb +5 -0
  116. data/templates/default/service/rest/client/method/def/_response_normal_lro.text.erb +7 -0
  117. data/templates/default/service/rest/client/method/def/_response_paged.text.erb +7 -0
  118. data/templates/default/service/rest/client/method/def/_response_server_streaming.text.erb +11 -0
  119. data/templates/default/service/rest/client/method/docs/{_request.erb → _request.text.erb} +1 -3
  120. data/templates/default/service/rest/client/method/docs/_result.text.erb +10 -0
  121. data/templates/default/service/rest/client/method/docs/_snippets.text.erb +6 -0
  122. data/templates/default/service/rest/nonstandard_lro.text.erb +6 -0
  123. data/templates/default/service/rest/operations.text.erb +6 -0
  124. data/templates/default/service/rest/service_stub/_service_stub.text.erb +63 -0
  125. data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.text.erb +37 -0
  126. data/templates/default/service/rest/service_stub/method/_def.text.erb +35 -0
  127. data/templates/default/service/rest/service_stub/method/def/_response.text.erb +37 -0
  128. data/templates/default/service/rest/test/{client.erb → client.text.erb} +3 -3
  129. data/templates/default/service/rest/test/method/_assert_response.text.erb +2 -0
  130. data/templates/default/service/rest/test/method/{_configure.erb → _configure.text.erb} +3 -2
  131. data/templates/default/service/rest/test/method/_normal.text.erb +60 -0
  132. data/templates/default/service/rest/test/method/_server.text.erb +60 -0
  133. data/templates/default/service/rest/test/method/{_setup.erb → _setup.text.erb} +26 -10
  134. data/templates/default/service/test/{_resource.erb → _resource.text.erb} +1 -1
  135. data/templates/default/service/test/{client.erb → client.text.erb} +3 -2
  136. data/templates/default/service/test/client_paths.text.erb +33 -0
  137. data/templates/default/service/test/method/{_assert_response.erb → _assert_response.text.erb} +3 -0
  138. data/templates/default/service/test/method/{_bidi.erb → _bidi.text.erb} +1 -1
  139. data/templates/default/service/test/method/{_client.erb → _client.text.erb} +1 -1
  140. data/templates/default/service/test/method/{_configure.erb → _configure.text.erb} +2 -1
  141. data/templates/default/service/test/method/{_normal.erb → _normal.text.erb} +1 -1
  142. data/templates/default/service/test/method/{_server.erb → _server.text.erb} +1 -1
  143. data/templates/default/service/test/method/{_setup.erb → _setup.text.erb} +19 -2
  144. data/templates/default/snippets/{gemfile.erb → gemfile.text.erb} +2 -2
  145. data/templates/default/snippets/snippet/_body.text.erb +24 -0
  146. data/templates/default/snippets/snippet/_inline.text.erb +11 -0
  147. data/templates/default/snippets/snippet/_standalone.text.erb +25 -0
  148. data/templates/default/snippets/{standalone.erb → standalone.text.erb} +1 -1
  149. metadata +209 -230
  150. data/lib/google/api/annotations.pb.rb +0 -39
  151. data/lib/google/api/client.pb.rb +0 -43
  152. data/lib/google/api/field_behavior.pb.rb +0 -51
  153. data/lib/google/api/http.pb.rb +0 -60
  154. data/lib/google/api/resource.pb.rb +0 -80
  155. data/lib/google/longrunning/operations.pb.rb +0 -115
  156. data/lib/google/protobuf/any.pb.rb +0 -40
  157. data/lib/google/protobuf/compiler/plugin.pb.rb +0 -79
  158. data/lib/google/protobuf/descriptor.pb.rb +0 -360
  159. data/lib/google/protobuf/empty.pb.rb +0 -36
  160. data/lib/google/rpc/status.pb.rb +0 -46
  161. data/templates/default/gem/gemfile.erb +0 -4
  162. data/templates/default/lib/rest/_rest.erb +0 -9
  163. data/templates/default/service/client/method/def/_request_normal.erb +0 -4
  164. data/templates/default/service/client/method/def/_request_streaming.erb +0 -9
  165. data/templates/default/service/client/method/def/_response.erb +0 -6
  166. data/templates/default/service/client/method/docs/_deprecated.erb +0 -5
  167. data/templates/default/service/client/method/docs/_snippets.erb +0 -6
  168. data/templates/default/service/client/resource/_def.erb +0 -6
  169. data/templates/default/service/rest/client/_client.erb +0 -106
  170. data/templates/default/service/rest/client/_config.erb +0 -122
  171. data/templates/default/service/rest/client/method/def/_response.erb +0 -8
  172. data/templates/default/service/rest/client/method/def/_response_lro.erb +0 -7
  173. data/templates/default/service/rest/client/method/def/_response_normal.erb +0 -6
  174. data/templates/default/service/rest/client/method/def/_response_paged.erb +0 -7
  175. data/templates/default/service/rest/client/method/docs/_result.erb +0 -6
  176. data/templates/default/service/rest/service_stub/_service_stub.erb +0 -25
  177. data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.erb +0 -24
  178. data/templates/default/service/rest/service_stub/method/_def.erb +0 -20
  179. data/templates/default/service/rest/service_stub/method/def/_response.erb +0 -17
  180. data/templates/default/service/rest/test/method/_assert_response.erb +0 -2
  181. data/templates/default/service/rest/test/method/_normal.erb +0 -71
  182. data/templates/default/service/test/client_paths.erb +0 -15
  183. data/templates/default/snippets/snippet/_structure.erb +0 -71
  184. /data/gem_templates/{binary.erb → binary.text.erb} +0 -0
  185. /data/gem_templates/{dockerfile.erb → dockerfile.text.erb} +0 -0
  186. /data/gem_templates/{entrypoint.erb → entrypoint.text.erb} +0 -0
  187. /data/gem_templates/{gapic_sh.erb → gapic_sh.text.erb} +0 -0
  188. /data/gem_templates/{gemfile.erb → gemfile.text.erb} +0 -0
  189. /data/gem_templates/{gemspec.erb → gemspec.text.erb} +0 -0
  190. /data/gem_templates/{generator.erb → generator.text.erb} +0 -0
  191. /data/gem_templates/{gitignore.erb → gitignore.text.erb} +0 -0
  192. /data/gem_templates/{rakefile.erb → rakefile.text.erb} +0 -0
  193. /data/gem_templates/{readme.erb → readme.text.erb} +0 -0
  194. /data/gem_templates/{rubocop.erb → rubocop.text.erb} +0 -0
  195. /data/gem_templates/shared/{_header.erb → _header.text.erb} +0 -0
  196. /data/gem_templates/shared/{_license.erb → _license.text.erb} +0 -0
  197. /data/gem_templates/shared/{_warning.erb → _warning.text.erb} +0 -0
  198. /data/gem_templates/{test_generator.erb → test_generator.text.erb} +0 -0
  199. /data/gem_templates/{test_helper.erb → test_helper.text.erb} +0 -0
  200. /data/gem_templates/{version.erb → version.text.erb} +0 -0
  201. /data/templates/default/gem/{_version.erb → _version.text.erb} +0 -0
  202. /data/templates/default/gem/{changelog.erb → changelog.text.erb} +0 -0
  203. /data/templates/default/gem/{entrypoint.erb → entrypoint.text.erb} +0 -0
  204. /data/templates/default/gem/{gapic_metadata_json.erb → gapic_metadata_json.text.erb} +0 -0
  205. /data/templates/default/gem/{gitignore.erb → gitignore.text.erb} +0 -0
  206. /data/templates/default/gem/{license.erb → license.text.erb} +0 -0
  207. /data/templates/default/gem/{rakefile.erb → rakefile.text.erb} +0 -0
  208. /data/templates/default/gem/{version.erb → version.text.erb} +0 -0
  209. /data/templates/default/layouts/{_ruby.erb → _ruby.text.erb} +0 -0
  210. /data/templates/default/{package.erb → package.text.erb} +0 -0
  211. /data/templates/default/proto_docs/{_proto_file.erb → _proto_file.text.erb} +0 -0
  212. /data/templates/default/proto_docs/{proto_file.erb → proto_file.text.erb} +0 -0
  213. /data/templates/default/proto_docs/{readme.erb → readme.text.erb} +0 -0
  214. /data/templates/default/service/{_helpers.erb → _helpers.text.erb} +0 -0
  215. /data/templates/default/service/client/{_credentials.erb → _credentials.text.erb} +0 -0
  216. /data/templates/default/service/client/{_paths.erb → _paths.text.erb} +0 -0
  217. /data/templates/default/service/client/{_requires.erb → _requires.text.erb} +0 -0
  218. /data/templates/default/service/client/{_resource.erb → _resource.text.erb} +0 -0
  219. /data/templates/default/service/client/{_self_configure.erb → _self_configure.text.erb} +0 -0
  220. /data/templates/default/service/client/method/def/{_request.erb → _request.text.erb} +0 -0
  221. /data/templates/default/service/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
  222. /data/templates/default/service/client/method/docs/{_error.erb → _error.text.erb} +0 -0
  223. /data/templates/default/service/client/method/docs/{_request.erb → _request.text.erb} +0 -0
  224. /data/templates/default/service/client/method/docs/{_request_field.erb → _request_field.text.erb} +0 -0
  225. /data/templates/default/service/client/method/docs/{_request_streaming.erb → _request_streaming.text.erb} +0 -0
  226. /data/templates/default/service/client/method/docs/{_response.erb → _response.text.erb} +0 -0
  227. /data/templates/default/service/client/method/docs/{_sample.erb → _sample.text.erb} +0 -0
  228. /data/templates/default/service/client/method/docs/{_sample_response.erb → _sample_response.text.erb} +0 -0
  229. /data/templates/default/service/client/method/docs/{_samples.erb → _samples.text.erb} +0 -0
  230. /data/templates/default/service/client/method/docs/request_field/{_arg.erb → _arg.text.erb} +0 -0
  231. /data/templates/default/service/client/method/docs/request_field/{_hash.erb → _hash.text.erb} +0 -0
  232. /data/templates/default/service/client/method/docs/sample_response/{_comment.erb → _comment.text.erb} +0 -0
  233. /data/templates/default/service/client/method/docs/sample_response/{_define.erb → _define.text.erb} +0 -0
  234. /data/templates/default/service/client/method/docs/sample_response/{_loop.erb → _loop.text.erb} +0 -0
  235. /data/templates/default/service/client/method/docs/sample_response/{_print.erb → _print.text.erb} +0 -0
  236. /data/templates/default/service/client/method/docs/sample_response/{_write_file.erb → _write_file.text.erb} +0 -0
  237. /data/templates/default/service/client/resource/{_doc.erb → _doc.text.erb} +0 -0
  238. /data/templates/default/service/client/resource/{_multi.erb → _multi.text.erb} +0 -0
  239. /data/templates/default/service/client/resource/{_single.erb → _single.text.erb} +0 -0
  240. /data/templates/default/service/{client.erb → client.text.erb} +0 -0
  241. /data/templates/default/service/{credentials.erb → credentials.text.erb} +0 -0
  242. /data/templates/default/service/{operations.erb → operations.text.erb} +0 -0
  243. /data/templates/default/service/{paths.erb → paths.text.erb} +0 -0
  244. /data/templates/default/service/rest/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
  245. /data/templates/default/service/rest/client/method/docs/{_error.erb → _error.text.erb} +0 -0
  246. /data/templates/default/service/rest/{client.erb → client.text.erb} +0 -0
  247. /data/templates/default/service/rest/{grpc_transcoding.erb → grpc_transcoding.text.erb} +0 -0
  248. /data/templates/default/service/rest/service_stub/grpc_transcoding_method/def/{_query_string_param.erb → _query_string_param.text.erb} +0 -0
  249. /data/templates/default/service/rest/service_stub/method/def/{_request.erb → _request.text.erb} +0 -0
  250. /data/templates/default/service/rest/{service_stub.erb → service_stub.text.erb} +0 -0
  251. /data/templates/default/service/{rest.erb → rest.text.erb} +0 -0
  252. /data/templates/default/service/test/{client_operations.erb → client_operations.text.erb} +0 -0
  253. /data/templates/default/service/test/{smoke.erb → smoke.text.erb} +0 -0
  254. /data/templates/default/{service.erb → service.text.erb} +0 -0
  255. /data/templates/default/shared/{_header.erb → _header.text.erb} +0 -0
  256. /data/templates/default/shared/{_license.erb → _license.text.erb} +0 -0
  257. /data/templates/default/shared/{_warning.erb → _warning.text.erb} +0 -0
@@ -0,0 +1,13 @@
1
+ <%- assert_locals package -%>
2
+ <%- package.first_service_with_rest.rest.mixin_presenters.each do |subclient| -%>
3
+ <%- subclient.bindings_override.each do |method, bindings| -%>
4
+ default_config.bindings_override["<%= method %>"] = [
5
+
6
+ <%- last_binding_index = bindings.count - 1 -%>
7
+ <%- bindings.each_with_index do |http_binding, index| -%>
8
+ <%- comma = last_binding_index == index ? "" : "," -%>
9
+ <%= indent render(partial: "lib/package/self_configure/binding_default", locals: { http_binding: http_binding }), 4 %><%= comma %>
10
+ <%- end -%>
11
+ ]
12
+ <%- end -%>
13
+ <%- end -%>
@@ -0,0 +1,15 @@
1
+ <%- assert_locals http_binding -%>
2
+ Gapic::Rest::GrpcTranscoder::HttpBinding.create_with_validation(
3
+ uri_method: :<%= http_binding.verb %>,
4
+ uri_template: "<%= http_binding.uri_for_transcoding %>",
5
+ matches: [
6
+ <%- http_binding.routing_params_transcoder_matches_strings.each do |match_str| -%>
7
+ <%= match_str %>
8
+ <%- end -%>
9
+ ],
10
+ <%- if http_binding.body? -%>
11
+ body: "<%= http_binding.body %>"
12
+ <%- else -%>
13
+ body: nil
14
+ <%- end -%>
15
+ )
@@ -0,0 +1,46 @@
1
+ <%- assert_locals service -%>
2
+ <% @requires = capture do %>
3
+ require "gapic/rest"
4
+ require "gapic/config"
5
+ require "gapic/config/method"
6
+
7
+ require "<%= service.gem.version_require %>"
8
+ <%- if service.package.mixin_binding_overrides? -%>
9
+ require "<%= service.package.mixin_binding_overrides_require %>"
10
+ <%- end -%>
11
+
12
+ <%- unless service.generic_endpoint? -%>
13
+ require "<%= service.credentials_require %>"
14
+ <%- end -%>
15
+ <%- if service.paths? -%>
16
+ require "<%= service.paths_require %>"
17
+ <%- end -%>
18
+ <%- if service.lro? -%>
19
+ require "<%= service.rest.operations_require %>"
20
+ <%- end -%>
21
+ <%- if service.nonstandard_lro_provider? -%>
22
+ require "<%= service.rest.nonstandard_lro_require %>"
23
+ <%- end -%>
24
+ require "<%= service.rest.client_require %>"
25
+ <% end %>
26
+ ##
27
+ <%- if service.doc_description -%>
28
+ <%= indent service.doc_description, "# " %>
29
+ #
30
+ <%- end -%>
31
+ # To load this service and instantiate a REST client:
32
+ #
33
+ # require "<%= service.rest.service_require %>"
34
+ # client = <%= service.rest.create_client_call %>
35
+ #
36
+ module <%= service.module_name %>
37
+ # Client for the REST transport
38
+ module Rest
39
+ end
40
+ end
41
+
42
+
43
+
44
+ <% @footer = capture do %>
45
+ <%= render partial: "service/helpers", locals: { service: service.rest} -%>
46
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <%- assert_locals package -%>
2
+ <%= render partial: "lib/package_rest",
3
+ layout: "layouts/ruby",
4
+ locals: { package: package,
5
+ namespace: package.parent_namespace }
6
+ %>
@@ -0,0 +1,9 @@
1
+ <%- assert_locals presenter -%>
2
+ <% newline ||= false %>
3
+ <% indentation ||= "# " %>
4
+ <%- if presenter.is_deprecated? -%>
5
+ <%= indent "@deprecated This #{presenter.type} is deprecated and may be removed in the next major version update.\n", indentation %>
6
+ <%- if newline -%>
7
+ <%= indentation %>
8
+ <%- end -%>
9
+ <%- end -%>
@@ -2,6 +2,7 @@
2
2
  <%- if enum.doc_description -%>
3
3
  <%= indent enum.doc_description, "# " %>
4
4
  <%- end -%>
5
+ <%= render partial: "proto_docs/deprecated", locals: { presenter: enum } -%>
5
6
  module <%= enum.name %>
6
7
  <%- enum.values.each do |value| -%>
7
8
 
@@ -2,8 +2,10 @@
2
2
  <%- if message.doc_description -%>
3
3
  <%= indent message.doc_description, "# " %>
4
4
  <%- end -%>
5
+ <%= render partial: "proto_docs/deprecated", locals: { presenter: message } -%>
5
6
  <%- message.fields.each do |field| -%>
6
7
  <%= indent field.doc_attribute_type, "# " %>
8
+ <%= render(partial: "proto_docs/deprecated", locals: { presenter:field, indentation: "# " }) -%>
7
9
  # @return [<%= field.output_doc_types %>]
8
10
  <%- if field.doc_description -%>
9
11
  <%= indent field.doc_description, "# " %>
@@ -2,15 +2,31 @@
2
2
  <% @requires = capture do %>
3
3
  <%= render partial: "service/client/requires", locals: { service: service} -%>
4
4
  require "<%= service.proto_service_require %>"
5
+ <%- if service.subclients? -%>
6
+ <%- service.subclients.each do |subclient| -%>
7
+ <%- unless subclient.client_class_name == "Operations" -%>
8
+ require "<%= subclient.require_str %>"
9
+ <%- end -%>
10
+ <%- end -%>
11
+ <%- end -%>
12
+ <%- if service.autogenerates_uuid? -%>
13
+ require "securerandom"
14
+ <%- end -%>
5
15
  <% end %>
6
16
  ##
7
17
  # Client for the <%= service.name %> service.
8
18
  #
9
19
  <%- if service.doc_description -%>
10
- <%= indent service.doc_description, "# " %>
20
+ <%= indent service.doc_description(transport: :grpc), "# " %>
11
21
  #
12
22
  <%- end -%>
13
23
  class <%= service.client_name %>
24
+ # @private
25
+ API_VERSION = "<%= service.api_version %>".freeze
26
+
27
+ # @private
28
+ DEFAULT_ENDPOINT_TEMPLATE = <%= service.client_endpoint_template.inspect %>
29
+
14
30
  <%- if service.paths? -%>
15
31
  include <%= service.paths_name %>
16
32
 
@@ -23,11 +39,8 @@ class <%= service.client_name %>
23
39
  #
24
40
  # See {<%= service.client_name_full %>::Configuration}
25
41
  # for a description of the configuration fields.
26
- <%- if service.is_deprecated? -%>
27
- #
28
- # @deprecated This service is deprecated and may be removed in the next major version update.
29
- <%- end -%>
30
42
  #
43
+ <%= render partial: "proto_docs/deprecated", locals: { presenter: service, newline: true } -%>
31
44
  # @example
32
45
  #
33
46
  # # Modify the configuration for all <%= service.name %> clients
@@ -64,6 +77,15 @@ class <%= service.client_name %>
64
77
  @config
65
78
  end
66
79
 
80
+ ##
81
+ # The effective universe domain
82
+ #
83
+ # @return [String]
84
+ #
85
+ def universe_domain
86
+ @<%= service.stub_name %>.universe_domain
87
+ end
88
+
67
89
  ##
68
90
  # Create a new <%= service.name %> client object.
69
91
  #
@@ -98,7 +120,8 @@ class <%= service.client_name %>
98
120
  <%- unless service.generic_endpoint? -%>
99
121
  # Use self-signed JWT if the endpoint is unchanged from default,
100
122
  # but only if the default endpoint does not have a region prefix.
101
- enable_self_signed_jwt = @config.endpoint == <%= service.client_name %>.configure.endpoint &&
123
+ enable_self_signed_jwt = @config.endpoint.nil? ||
124
+ @config.endpoint == Configuration::DEFAULT_ENDPOINT &&
102
125
  !@config.endpoint.split(".").first.include?("-")
103
126
  credentials ||= Credentials.default scope: @config.scope,
104
127
  enable_self_signed_jwt: enable_self_signed_jwt
@@ -109,36 +132,73 @@ class <%= service.client_name %>
109
132
  @quota_project_id = @config.quota_project
110
133
  @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
111
134
 
112
- <%- if service.lro? -%>
113
- <%= service.lro_client_ivar %> = <%= service.operations_name %>.new do |config|
135
+ <%- service.lro_subclients.each do |subclient| -%>
136
+ @<%= subclient.client_var_name %> = <%= subclient.client_class_name %>.new do |config|
114
137
  config.credentials = credentials
138
+ config.quota_project = @quota_project_id
115
139
  config.endpoint = @config.endpoint
140
+ config.universe_domain = @config.universe_domain
116
141
  end
117
142
 
118
143
  <%- end -%>
119
144
  @<%= service.stub_name %> = ::Gapic::ServiceStub.new(
120
145
  <%= service.proto_service_stub_name_full %>,
121
- credentials: credentials,
122
- endpoint: @config.endpoint,
146
+ credentials: credentials,
147
+ endpoint: @config.endpoint,
148
+ endpoint_template: DEFAULT_ENDPOINT_TEMPLATE,
149
+ universe_domain: @config.universe_domain,
123
150
  channel_args: @config.channel_args,
124
- interceptors: @config.interceptors
151
+ interceptors: @config.interceptors,
152
+ channel_pool_config: @config.channel_pool,
153
+ logger: @config.logger
125
154
  )
155
+
156
+ @<%= service.stub_name %>.stub_logger&.info do |entry|
157
+ entry.set_system_name
158
+ entry.set_service
159
+ entry.message = "Created client for #{entry.service}"
160
+ entry.set_credentials_fields credentials
161
+ entry.set "customEndpoint", @config.endpoint if @config.endpoint
162
+ entry.set "defaultTimeout", @config.timeout if @config.timeout
163
+ entry.set "quotaProject", @quota_project_id if @quota_project_id
164
+ end
165
+ <%- service.mixin_presenters.each do |subclient| -%>
166
+
167
+ @<%= subclient.client_var_name %> = <%= subclient.client_class_name %>.new do |config|
168
+ config.credentials = credentials
169
+ config.quota_project = @quota_project_id
170
+ config.endpoint = @<%= service.stub_name %>.endpoint
171
+ config.universe_domain = @<%= service.stub_name %>.universe_domain
172
+ config.logger = @<%= service.stub_name %>.logger if config.respond_to? :logger=
173
+ end
174
+ <%- end -%>
126
175
  end
127
176
 
128
- <%- if service.lro? -%>
177
+ <%- if service.subclients? -%>
178
+ <%- service.subclients.each do |subclient| -%>
129
179
  ##
130
- # Get the associated client for long-running operations.
180
+ # Get the associated client for <%= subclient.service_description %>.
131
181
  #
132
- # @return [<%= service.operations_name_full %>]
182
+ # @return [<%= subclient.client_class_docname %>]
133
183
  #
134
- attr_reader :<%= service.lro_client_var %>
184
+ attr_reader :<%= subclient.client_var_name %>
185
+
186
+ <%- end -%>
187
+ <%- end -%>
188
+ ##
189
+ # The logger used for request/response debug logging.
190
+ #
191
+ # @return [Logger]
192
+ #
193
+ def logger
194
+ @<%= service.stub_name %>.logger
195
+ end
135
196
 
136
- <%- end -%>
137
197
  # Service calls
138
198
  <%- service.methods.each do |method| -%>
139
199
 
140
200
  <%= indent_tail render(partial: "service/client/method/def", locals: { method: method }), 2 %>
141
- <%- end %>
201
+ <%- end -%>
142
202
 
143
203
  <%= indent_tail render(partial: "service/client/config", locals: { service: service }), 2 %>
144
204
  end
@@ -32,20 +32,27 @@
32
32
  #
33
33
  <%- end -%>
34
34
  # @!attribute [rw] endpoint
35
- # The hostname or hostname:port of the service endpoint.
36
- # Defaults to `<%= service.client_endpoint.inspect %>`.
37
- # @return [::String]
35
+ # A custom service endpoint, as a hostname or hostname:port. The default is
36
+ # nil, indicating to use the default endpoint in the current universe domain.
37
+ # @return [::String,nil]
38
38
  # @!attribute [rw] credentials
39
39
  # Credentials to send with calls. You may provide any of the following types:
40
40
  # * (`String`) The path to a service account key file in JSON format
41
41
  # * (`Hash`) A service account key as a Hash
42
42
  # * (`Google::Auth::Credentials`) A googleauth credentials object
43
- # (see the [googleauth docs](https://googleapis.dev/ruby/googleauth/latest/index.html))
43
+ # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials))
44
44
  # * (`Signet::OAuth2::Client`) A signet oauth2 client object
45
- # (see the [signet docs](https://googleapis.dev/ruby/signet/latest/Signet/OAuth2/Client.html))
45
+ # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client))
46
46
  # * (`GRPC::Core::Channel`) a gRPC channel with included credentials
47
47
  # * (`GRPC::Core::ChannelCredentials`) a gRPC credentails object
48
48
  # * (`nil`) indicating no credentials
49
+ #
50
+ # Warning: If you accept a credential configuration (JSON file or Hash) from an
51
+ # external source for authentication to Google Cloud, you must validate it before
52
+ # providing it to a Google API client library. Providing an unvalidated credential
53
+ # configuration to Google APIs can compromise the security of your systems and data.
54
+ # For more information, refer to [Validate credential configurations from external
55
+ # sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials).
49
56
  # @return [::Object]
50
57
  # @!attribute [rw] scope
51
58
  # The OAuth scopes
@@ -80,14 +87,28 @@
80
87
  # @!attribute [rw] quota_project
81
88
  # A separate project against which to charge quota.
82
89
  # @return [::String]
90
+ # @!attribute [rw] universe_domain
91
+ # The universe domain within which to make requests. This determines the
92
+ # default endpoint URL. The default value of nil uses the environment
93
+ # universe (usually the default "googleapis.com" universe).
94
+ # @return [::String,nil]
95
+ # @!attribute [rw] logger
96
+ # A custom logger to use for request/response debug logging, or the value
97
+ # `:default` (the default) to construct a default logger, or `nil` to
98
+ # explicitly disable logging.
99
+ # @return [::Logger,:default,nil]
83
100
  #
84
101
  class Configuration
85
102
  extend ::Gapic::Config
86
103
 
87
- config_attr :endpoint, <%= service.client_endpoint.inspect %>, ::String
104
+ # @private
105
+ # The endpoint specific to the default "googleapis.com" universe. Deprecated.
106
+ DEFAULT_ENDPOINT = <%= service.client_endpoint.inspect %>
107
+
108
+ config_attr :endpoint, nil, ::String, nil
88
109
  config_attr :credentials, nil do |value|
89
- allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
90
- allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
110
+ allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Google::Auth::BaseClient, ::Signet::OAuth2::Client, nil]
111
+ allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC::Core::Channel
91
112
  allowed.any? { |klass| klass === value }
92
113
  end
93
114
  config_attr :scope, nil, ::String, ::Array, nil
@@ -99,6 +120,8 @@ class Configuration
99
120
  config_attr :metadata, nil, ::Hash, nil
100
121
  config_attr :retry_policy, nil, ::Hash, ::Proc, nil
101
122
  config_attr :quota_project, nil, ::String, nil
123
+ config_attr :universe_domain, nil, ::String, nil
124
+ config_attr :logger, :default, ::Logger, nil, :default
102
125
 
103
126
  # @private
104
127
  def initialize parent_config = nil
@@ -119,6 +142,14 @@ class Configuration
119
142
  end
120
143
  end
121
144
 
145
+ ##
146
+ # Configuration for the channel pool
147
+ # @return [::Gapic::ServiceStub::ChannelPool::Configuration]
148
+ #
149
+ def channel_pool
150
+ @channel_pool ||= ::Gapic::ServiceStub::ChannelPool::Configuration.new
151
+ end
152
+
122
153
  ##
123
154
  # Configuration RPC class for the <%= service.name %> API.
124
155
  #
@@ -0,0 +1,57 @@
1
+ <%- assert_locals service -%>
2
+ <% @requires = capture do %>
3
+ require "gapic/operation/retry_policy"
4
+ require "gapic/generic_lro/operation"
5
+ <% end %>
6
+
7
+ # A module containing nonstandard lro helpers
8
+ module <%= service.nonstandard_lro_name %>
9
+ class << self
10
+ ##
11
+ # Creates a Generic LRO operation object that wraps the nonstandard
12
+ # long-running operation specific to this service.
13
+ #
14
+ # @param operation [Object] The long-running operation object that is returned by the initial method call.
15
+ #
16
+ # @param client [<%= service.usable_service_presenter.client_name_full %>] The client that handles the polling for the longrunning operation.
17
+ #
18
+ # @param request_values [Map<String, String>] The values that are to be copied from the request that
19
+ # triggered the longrunning operation, into the request that polls for the longrunning operation.
20
+ # The format is `name of the request field -> value`
21
+ #
22
+ # @param options [Gapic::CallOptions] call options for this operation
23
+ #
24
+ # @return [Gapic::GenericLRO::Operation]
25
+ #
26
+ def create_operation operation:, client:, request_values:, options:
27
+ Gapic::GenericLRO::Operation.new(operation,
28
+ client: client,
29
+ polling_method_name: "<%= service.nonstandard_lro_polling_method_name %>",
30
+ request_values: request_values,
31
+ operation_status_field: "<%= service.nonstandard_lro.operation_status_field %>",
32
+ <%- if service.nonstandard_lro.operation_name_field -%>
33
+ operation_name_field: "<%= service.nonstandard_lro.operation_name_field %>",
34
+ <%- end -%>
35
+ <%- if service.nonstandard_lro.operation_err_code_field -%>
36
+ operation_err_code_field: "<%= service.nonstandard_lro.operation_err_code_field %>",
37
+ <%- end -%>
38
+ <%- if service.nonstandard_lro.operation_err_msg_field -%>
39
+ operation_err_msg_field: "<%= service.nonstandard_lro.operation_err_msg_field %>",
40
+ <%- end -%>
41
+ <%- if service.nonstandard_lro.operation_response_fields.any? -%>
42
+ operation_copy_fields: {
43
+ <%- service.nonstandard_lro.operation_response_fields.each_with_index do |(field_from, field_to), i| -%>
44
+ <%- if i == service.nonstandard_lro.operation_response_fields.length - 1 -%>
45
+ "<%= field_to %>" => "<%= field_from %>"
46
+ <%- else -%>
47
+ "<%= field_to %>" => "<%= field_from %>",
48
+ <%- end -%>
49
+ <%- end -%>
50
+ },
51
+ <%- else -%>
52
+ operation_copy_fields: {},
53
+ <%- end -%>
54
+ options: options)
55
+ end
56
+ end
57
+ end
@@ -5,6 +5,12 @@ require "<%= service.lro_service.proto_service_require %>"
5
5
  <% end %>
6
6
  # Service that implements Longrunning Operations API.
7
7
  class <%= service.operations_name %>
8
+ # @private
9
+ API_VERSION = "<%= service.api_version %>".freeze
10
+
11
+ # @private
12
+ DEFAULT_ENDPOINT_TEMPLATE = <%= service.client_endpoint_template.inspect %>
13
+
8
14
  # @private
9
15
  attr_reader :<%= service.lro_service.stub_name %>
10
16
 
@@ -39,6 +45,15 @@ class <%= service.operations_name %>
39
45
  @config
40
46
  end
41
47
 
48
+ ##
49
+ # The effective universe domain
50
+ #
51
+ # @return [String]
52
+ #
53
+ def universe_domain
54
+ @<%= service.lro_service.stub_name %>.universe_domain
55
+ end
56
+
42
57
  ##
43
58
  # Create a new <%= service.operations_name %> client object.
44
59
  #
@@ -69,11 +84,17 @@ class <%= service.operations_name %>
69
84
 
70
85
  @<%= service.lro_service.stub_name %> = ::Gapic::ServiceStub.new(
71
86
  <%= service.lro_service.proto_service_stub_name_full %>,
72
- credentials: credentials,
73
- endpoint: @config.endpoint,
87
+ credentials: credentials,
88
+ endpoint: @config.endpoint,
89
+ endpoint_template: DEFAULT_ENDPOINT_TEMPLATE,
90
+ universe_domain: @config.universe_domain,
74
91
  channel_args: @config.channel_args,
75
- interceptors: @config.interceptors
92
+ interceptors: @config.interceptors,
93
+ channel_pool_config: @config.channel_pool
76
94
  )
95
+
96
+ # Used by an LRO wrapper for some methods of this service
97
+ @operations_client = self
77
98
  end
78
99
 
79
100
  # Service calls
@@ -6,7 +6,7 @@
6
6
  default_config.timeout = <%= format_number service.grpc_service_config.timeout_seconds %>
7
7
  <%- end -%>
8
8
  <%- if service.grpc_service_config.retry_policy -%>
9
- default_config.retry_policy = <%= indent_tail service.service_config_presenter.retry_policy_fields, 2 %>
9
+ default_config.retry_policy = <%= indent_tail service.grpc_service_config_presenter.retry_policy_fields, 2 %>
10
10
  <%- end -%>
11
11
  <%- end -%>
12
12
  <%- method_service.methods.each do |method| -%>
@@ -16,7 +16,7 @@
16
16
  default_config.rpcs.<%= method.name %>.timeout = <%= format_number method.grpc_service_config.timeout_seconds %>
17
17
  <%- end -%>
18
18
  <%- if method.grpc_service_config.retry_policy -%>
19
- default_config.rpcs.<%= method.name %>.retry_policy =<%= indent_tail method.service_config_presenter.retry_policy_fields, 2 %>
19
+ default_config.rpcs.<%= method.name %>.retry_policy =<%= indent_tail method.grpc_service_config_presenter.retry_policy_fields, 2 %>
20
20
  <%- end -%>
21
21
  <%- end -%>
22
22
  <%- end -%>
@@ -1,10 +1,10 @@
1
1
  <%- assert_locals method -%>
2
2
  ##
3
3
  <%- if method.doc_description -%>
4
- <%= indent method.doc_description, "# " %>
4
+ <%= indent method.doc_description(transport: :grpc), "# " %>
5
5
  #
6
6
  <%- end -%>
7
- <%= render partial: "service/client/method/docs/deprecated", locals: { method: method } -%>
7
+ <%= render partial: "proto_docs/deprecated", locals: { presenter: method , newline: true} -%>
8
8
  <%= render partial: "service/client/method/docs/request", locals: { method: method } -%>
9
9
  #
10
10
  <%= render partial: "service/client/method/docs/response", locals: { method: method } -%>
@@ -5,21 +5,15 @@ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
5
5
  # Customize the options with defaults
6
6
  metadata = @config.rpcs.<%= method.name %>.metadata.to_h
7
7
 
8
- # Set x-goog-api-client and x-goog-user-project headers
8
+ # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers
9
9
  metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
10
10
  lib_name: @config.lib_name, lib_version: @config.lib_version,
11
11
  gapic_version: ::<%= method.service.gem.version_name_full %>
12
+ metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty?
12
13
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
13
14
  <%- if method.routing_params? && !method.client_streaming? -%>
14
15
 
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
16
+ <%= render partial: "service/client/method/def/routing_params", locals: { method: method } -%>
23
17
  <%- end -%>
24
18
 
25
19
  options.apply_defaults timeout: @config.rpcs.<%= method.name %>.timeout,
@@ -0,0 +1,18 @@
1
+ <%- assert_locals method -%>
2
+ raise ::ArgumentError, "request must be provided" if request.nil?
3
+ <% method.auto_populated_fields.each do |field| %>
4
+ <% name = field.name %>
5
+
6
+ # Auto populate request field `<%= name %>`.
7
+ if request.is_a? Hash
8
+ request[:<%= name %>] = SecureRandom.uuid unless request.key?(:<%= name %>) || request.key?("<%= name %>")
9
+ else
10
+ <%- if field.proto3_optional? -%>
11
+ request.<%= name %> = SecureRandom.uuid unless request.has_<%= name %>?
12
+ <%- else -%>
13
+ request.<%= name %> = SecureRandom.uuid if request.respond_to?(:<%= name %>) && request.<%= name %>.empty?
14
+ <%- end -%>
15
+ end
16
+ <% end %>
17
+
18
+ request = ::Gapic::Protobuf.coerce request, to: <%= method.request_type %>
@@ -0,0 +1,23 @@
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
+ <% method.auto_populated_fields.each do |field| %>
7
+ <% name = field.name %>
8
+
9
+ # Auto populate request field `<%= name %>`.
10
+ if request.is_a? Hash
11
+ request[:<%= name %>] = SecureRandom.uuid unless request.key?(:<%= name %>) || request.key?("<%= name %>")
12
+ else
13
+ <%- if field.proto3_optional? -%>
14
+ request.<%= name %> = SecureRandom.uuid unless request.has_<%= name %>?
15
+ <%- else -%>
16
+ request.<%= name %> = SecureRandom.uuid if request.respond_to?(:<%= name %>) && request.<%= name %>.empty?
17
+ <%- end -%>
18
+ end
19
+ <% end %>
20
+
21
+ request = request.lazy.map do |req|
22
+ ::Gapic::Protobuf.coerce req, to: <%= method.request_type %>
23
+ end
@@ -0,0 +1,10 @@
1
+ <%- assert_locals method -%>
2
+ <%- if method.paged? -%>
3
+ <%= render partial: "service/client/method/def/response_paged", locals: { method: method } -%>
4
+ <%- elsif method.rest.nonstandard_lro? -%>
5
+ <%= render partial: "service/client/method/def/response_nonstandard_lro", locals: { method: method } -%>
6
+ <%- elsif method.lro? -%>
7
+ <%= render partial: "service/client/method/def/response_normal_lro", locals: { method: method } -%>
8
+ <%- else -%>
9
+ <%= render partial: "service/client/method/def/response_normal", locals: { method: method } -%>
10
+ <%- end -%>
@@ -0,0 +1,23 @@
1
+ <%- assert_locals method -%>
2
+ @<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |result, response|
3
+ result = <%= method.nonstandard_lro_client.helper_type %>.create_operation(
4
+ operation: result,
5
+ client: <%= method.nonstandard_lro_client.client_var_name %>,
6
+ <%- if method.lro.operation_request_fields.any? -%>
7
+ request_values: {
8
+ <%- method.lro.operation_request_fields.each_with_index do |(field_from, field_to), i| -%>
9
+ <%- if i == method.lro.operation_request_fields.length - 1 -%>
10
+ "<%= field_to %>" => request.<%= field_from %>
11
+ <%- else -%>
12
+ "<%= field_to %>" => request.<%= field_from %>,
13
+ <%- end -%>
14
+ <%- end -%>
15
+ },
16
+ <%- else -%>
17
+ request_values: {},
18
+ <%- end -%>
19
+ options: options
20
+ )
21
+ yield result, response if block_given?
22
+ throw :response, result
23
+ end
@@ -0,0 +1,4 @@
1
+ <%- assert_locals method -%>
2
+ @<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
3
+ yield response, operation if block_given?
4
+ end
@@ -1,8 +1,6 @@
1
1
  <%- assert_locals method -%>
2
2
  @<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
3
- <%- if method.lro? -%>
4
3
  response = ::Gapic::Operation.new response, <%= method.service.lro_client_ivar %>, options: options
5
- <%- end -%>
6
4
  yield response, operation if block_given?
7
- return response
5
+ throw :response, response
8
6
  end
@@ -5,5 +5,5 @@
5
5
  <%- end -%>
6
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
7
  yield response, operation if block_given?
8
- return response
8
+ throw :response, response
9
9
  end