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,36 @@
1
+ <%- assert_locals method -%>
2
+ header_params = {}
3
+ <%- if method.routing.explicit_params? -%>
4
+ <%- method.routing.explicit_params.each do |key_name, routing_infos| -%>
5
+ <%- routing_infos.each do |routing_info| -%>
6
+ <%- if routing_info.pattern_matching_not_needed? -%>
7
+ if request.<%= routing_info.field.gsub(".", "&.") %> && !request.<%= routing_info.field %>.empty?
8
+ header_params["<%= key_name %>"] = request.<%= routing_info.field %>
9
+ end
10
+ <%- elsif routing_info.value_is_full_field? -%>
11
+ if request.<%= routing_info.field.gsub(".", "&.") %> &&
12
+ %r{<%= routing_info.field_regex_str %>}.match?(request.<%= routing_info.field %>)
13
+ header_params["<%= key_name %>"] = request.<%= routing_info.field %>
14
+ end
15
+ <%- else -%>
16
+ if request.<%= routing_info.field.gsub(".", "&.") %>
17
+ regex_match = %r{<%= routing_info.field_full_regex_str %>}.match request.<%= routing_info.field %>
18
+ if regex_match
19
+ header_params["<%= key_name %>"] = regex_match["<%= key_name %>".to_s]
20
+ end
21
+ end
22
+ <%- end -%>
23
+ <%- end -%>
24
+ <%- end -%>
25
+
26
+ request_params_header = URI.encode_www_form header_params
27
+ <%- else -%>
28
+ <%- method.routing_params.each_with_index do |routing_param, index| -%>
29
+ if request.<%= routing_param.gsub(".", "&.") %>
30
+ header_params["<%= routing_param %>"] = request.<%= routing_param %>
31
+ end
32
+ <%- end -%>
33
+
34
+ request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
35
+ <%- end -%>
36
+ metadata[:"x-goog-request-params"] ||= request_params_header
@@ -19,7 +19,7 @@
19
19
  <%- method.arguments.each do |arg| -%>
20
20
  # @param <%= arg.name %> [<%= arg.doc_types %>]
21
21
  <%- if arg.doc_description -%>
22
- <%= indent arg.doc_description, "# " %>
22
+ <%= indent arg.doc_description(transport: :grpc), "# " %>
23
23
  <%- end -%>
24
24
  <%- end -%>
25
25
  <%- end -%>
@@ -0,0 +1,6 @@
1
+ <%- assert_locals method -%>
2
+ <%- if method.generate_yardoc_snippets? -%>
3
+ # @example Basic example
4
+ <%= indent render(partial: "snippets/snippet/inline", locals: { snippet: method.snippet(transport: :grpc) }), "# " %>
5
+ #
6
+ <%- end -%>
@@ -0,0 +1,7 @@
1
+ <%- assert_locals pattern -%>
2
+ <%- pattern.arguments[0...-1].each do |arg| -%>
3
+ <% escaped_argument = pattern.escape_argument arg %>
4
+ raise ::ArgumentError, "<%= arg %> cannot contain /" if <%= escaped_argument %>.to_s.include? "/"
5
+ <%- end -%>
6
+
7
+ "<%= pattern.path_string %>"
@@ -0,0 +1,6 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "service/client/nonstandard_lro",
3
+ layout: "layouts/ruby",
4
+ locals: { service: service,
5
+ namespace: service.service_name_full }
6
+ %>
@@ -0,0 +1,202 @@
1
+ <%- assert_locals service -%>
2
+ <% @requires = capture do %>
3
+ <%= render partial: "service/client/requires", locals: { service: service} -%>
4
+ require "<%= service.proto_service_require %>"
5
+ require "<%= service.rest.service_stub_require %>"
6
+ <%- if service.rest.subclients? -%>
7
+ <%- service.rest.subclients.each do |subclient| -%>
8
+ <%- unless subclient.client_class_name == "Operations" -%>
9
+ require "<%= subclient.require_str %>"
10
+ <%- end -%>
11
+ <%- end -%>
12
+ <%- end -%>
13
+ <%- if service.autogenerates_uuid? -%>
14
+ require "securerandom"
15
+ <%- end -%>
16
+ <% end %>
17
+ ##
18
+ # REST client for the <%= service.name %> service.
19
+ #
20
+ <%- if service.doc_description -%>
21
+ <%= indent service.doc_description(transport: :rest), "# " %>
22
+ #
23
+ <%- end -%>
24
+ class <%= service.rest.client_name %>
25
+ # @private
26
+ API_VERSION = "<%= service.api_version %>".freeze
27
+
28
+ # @private
29
+ DEFAULT_ENDPOINT_TEMPLATE = <%= service.client_endpoint_template.inspect %>
30
+
31
+ <%- if service.paths? -%>
32
+ include <%= service.paths_name %>
33
+
34
+ <%- end -%>
35
+ # @private
36
+ attr_reader :<%= service.stub_name %>
37
+
38
+ ##
39
+ # Configure the <%= service.name %> <%= service.rest.client_name %> class.
40
+ #
41
+ # See {<%= service.rest.client_name_full %>::Configuration}
42
+ # for a description of the configuration fields.
43
+ <%= render partial: "proto_docs/deprecated", locals: { presenter: service } -%>
44
+ #
45
+ # @example
46
+ #
47
+ # # Modify the configuration for all <%= service.name %> clients
48
+ # <%= service.rest.client_name_full %>.configure do |config|
49
+ # config.timeout = 10.0
50
+ # end
51
+ #
52
+ # @yield [config] Configure the <%= service.rest.client_name %> client.
53
+ # @yieldparam config [<%= service.rest.client_name %>::Configuration]
54
+ #
55
+ # @return [<%= service.rest.client_name %>::Configuration]
56
+ #
57
+ def self.configure
58
+ <%= indent render(partial: "service/client/self_configure", locals: { service: service.rest }), 4 %>
59
+ end
60
+
61
+ ##
62
+ # Configure the <%= service.name %> <%= service.rest.client_name %> instance.
63
+ #
64
+ # The configuration is set to the derived mode, meaning that values can be changed,
65
+ # but structural changes (adding new fields, etc.) are not allowed. Structural changes
66
+ # should be made on {<%= service.rest.client_name %>.configure}.
67
+ #
68
+ # See {<%= service.rest.client_name_full %>::Configuration}
69
+ # for a description of the configuration fields.
70
+ #
71
+ # @yield [config] Configure the <%= service.rest.client_name %> client.
72
+ # @yieldparam config [<%= service.rest.client_name %>::Configuration]
73
+ #
74
+ # @return [<%= service.rest.client_name %>::Configuration]
75
+ #
76
+ def configure
77
+ yield @config if block_given?
78
+ @config
79
+ end
80
+
81
+ ##
82
+ # The effective universe domain
83
+ #
84
+ # @return [String]
85
+ #
86
+ def universe_domain
87
+ @<%= service.stub_name %>.universe_domain
88
+ end
89
+
90
+ ##
91
+ # Create a new <%= service.name %> REST client object.
92
+ #
93
+ # @example
94
+ #
95
+ # # Create a client using the default configuration
96
+ # client = <%= service.rest.client_name_full %>.new
97
+ #
98
+ # # Create a client using a custom configuration
99
+ # client = <%= service.rest.client_name_full %>.new do |config|
100
+ # config.timeout = 10.0
101
+ # end
102
+ #
103
+ # @yield [config] Configure the <%= service.name %> client.
104
+ # @yieldparam config [<%= service.rest.client_name %>::Configuration]
105
+ #
106
+ def initialize
107
+ # Create the configuration object
108
+ @config = Configuration.new <%= service.rest.client_name %>.configure
109
+
110
+ # Yield the configuration if needed
111
+ yield @config if block_given?
112
+
113
+ # Create credentials
114
+ credentials = @config.credentials
115
+ <%- unless service.generic_endpoint? -%>
116
+ # Use self-signed JWT if the endpoint is unchanged from default,
117
+ # but only if the default endpoint does not have a region prefix.
118
+ enable_self_signed_jwt = @config.endpoint.nil? ||
119
+ @config.endpoint == Configuration::DEFAULT_ENDPOINT &&
120
+ !@config.endpoint.split(".").first.include?("-")
121
+ credentials ||= Credentials.default scope: @config.scope,
122
+ enable_self_signed_jwt: enable_self_signed_jwt
123
+ if credentials.is_a?(::String) || credentials.is_a?(::Hash)
124
+ credentials = Credentials.new credentials, scope: @config.scope
125
+ end
126
+ <%- end -%>
127
+
128
+ @quota_project_id = @config.quota_project
129
+ @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
130
+
131
+ <%- service.rest.lro_subclients.each do |subclient| -%>
132
+ @<%= subclient.client_var_name %> = <%= subclient.client_class_docname %>.new do |config|
133
+ config.credentials = credentials
134
+ config.quota_project = @quota_project_id
135
+ config.endpoint = @config.endpoint
136
+ config.universe_domain = @config.universe_domain
137
+ <%- if subclient.respond_to?(:bindings_override) && !subclient.bindings_override.empty? -%>
138
+ config.bindings_override = @config.bindings_override
139
+ <%- end -%>
140
+ end
141
+
142
+ <%- end -%>
143
+ @<%= service.stub_name %> = <%= service.rest.service_stub_name_full %>.new(
144
+ endpoint: @config.endpoint,
145
+ endpoint_template: DEFAULT_ENDPOINT_TEMPLATE,
146
+ universe_domain: @config.universe_domain,
147
+ credentials: credentials,
148
+ logger: @config.logger
149
+ )
150
+
151
+ @<%= service.stub_name %>.logger(stub: true)&.info do |entry|
152
+ entry.set_system_name
153
+ entry.set_service
154
+ entry.message = "Created client for #{entry.service}"
155
+ entry.set_credentials_fields credentials
156
+ entry.set "customEndpoint", @config.endpoint if @config.endpoint
157
+ entry.set "defaultTimeout", @config.timeout if @config.timeout
158
+ entry.set "quotaProject", @quota_project_id if @quota_project_id
159
+ end
160
+ <%- service.rest.mixin_presenters.each do |subclient| -%>
161
+
162
+ @<%= subclient.client_var_name %> = <%= subclient.client_class_docname %>.new do |config|
163
+ config.credentials = credentials
164
+ config.quota_project = @quota_project_id
165
+ config.endpoint = @<%= service.stub_name %>.endpoint
166
+ config.universe_domain = @<%= service.stub_name %>.universe_domain
167
+ <%- if subclient.respond_to?(:bindings_override) && !subclient.bindings_override.empty? -%>
168
+ config.bindings_override = @config.bindings_override
169
+ <%- end -%>
170
+ config.logger = @<%= service.stub_name %>.logger if config.respond_to? :logger=
171
+ end
172
+ <%- end -%>
173
+ end
174
+
175
+ <%- if service.rest.subclients? -%>
176
+ <%- service.rest.subclients.each do |subclient| -%>
177
+ ##
178
+ # Get the associated client for <%= subclient.service_description %>.
179
+ #
180
+ # @return [<%= subclient.client_class_docname %>]
181
+ #
182
+ attr_reader :<%= subclient.client_var_name %>
183
+
184
+ <%- end -%>
185
+ <%- end -%>
186
+ ##
187
+ # The logger used for request/response debug logging.
188
+ #
189
+ # @return [Logger]
190
+ #
191
+ def logger
192
+ @<%= service.stub_name %>.logger
193
+ end
194
+
195
+ # Service calls
196
+ <%- service.rest.methods.each do |method| -%>
197
+
198
+ <%= indent_tail render(partial: "service/rest/client/method/def", locals: { method: method }), 2 %>
199
+ <%- end -%>
200
+
201
+ <%= indent_tail render(partial: "service/rest/client/config", locals: { service: service }), 2 %>
202
+ end
@@ -0,0 +1,178 @@
1
+ <%- assert_locals service -%>
2
+ <%- method_service ||= service -%>
3
+ ##
4
+ # Configuration class for the <%= service.name %> REST API.
5
+ #
6
+ # This class represents the configuration for <%= service.name %> REST,
7
+ # providing control over timeouts, retry behavior, logging, transport
8
+ # parameters, and other low-level controls. Certain parameters can also be
9
+ # applied individually to specific RPCs. See
10
+ # {<%= service.rest.client_name_full %>::Configuration::Rpcs}
11
+ # for a list of RPCs that can be configured independently.
12
+ #
13
+ # Configuration can be applied globally to all clients, or to a single client
14
+ # on construction.
15
+ #
16
+ <%- unless method_service.rest.methods.empty? -%>
17
+ # @example
18
+ #
19
+ # # Modify the global config, setting the timeout for
20
+ # # <%= method_service.rest.methods.first.name %> to 20 seconds,
21
+ # # and all remaining timeouts to 10 seconds.
22
+ # <%= service.rest.client_name_full %>.configure do |config|
23
+ # config.timeout = 10.0
24
+ # config.rpcs.<%= method_service.rest.methods.first.name %>.timeout = 20.0
25
+ # end
26
+ #
27
+ # # Apply the above configuration only to a new client.
28
+ # client = <%= service.rest.client_name_full %>.new do |config|
29
+ # config.timeout = 10.0
30
+ # config.rpcs.<%= method_service.rest.methods.first.name %>.timeout = 20.0
31
+ # end
32
+ #
33
+ <%- end -%>
34
+ # @!attribute [rw] endpoint
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
+ # @!attribute [rw] credentials
39
+ # Credentials to send with calls. You may provide any of the following types:
40
+ # * (`String`) The path to a service account key file in JSON format
41
+ # * (`Hash`) A service account key as a Hash
42
+ # * (`Google::Auth::Credentials`) A googleauth credentials object
43
+ # (see the [googleauth docs](https://rubydoc.info/gems/googleauth/Google/Auth/Credentials))
44
+ # * (`Signet::OAuth2::Client`) A signet oauth2 client object
45
+ # (see the [signet docs](https://rubydoc.info/gems/signet/Signet/OAuth2/Client))
46
+ # * (`nil`) indicating no credentials
47
+ #
48
+ # Warning: If you accept a credential configuration (JSON file or Hash) from an
49
+ # external source for authentication to Google Cloud, you must validate it before
50
+ # providing it to a Google API client library. Providing an unvalidated credential
51
+ # configuration to Google APIs can compromise the security of your systems and data.
52
+ # For more information, refer to [Validate credential configurations from external
53
+ # sources](https://cloud.google.com/docs/authentication/external/externally-sourced-credentials).
54
+ # @return [::Object]
55
+ # @!attribute [rw] scope
56
+ # The OAuth scopes
57
+ # @return [::Array<::String>]
58
+ # @!attribute [rw] lib_name
59
+ # The library name as recorded in instrumentation and logging
60
+ # @return [::String]
61
+ # @!attribute [rw] lib_version
62
+ # The library version as recorded in instrumentation and logging
63
+ # @return [::String]
64
+ # @!attribute [rw] timeout
65
+ # The call timeout in seconds.
66
+ # @return [::Numeric]
67
+ # @!attribute [rw] metadata
68
+ # Additional headers to be sent with the call.
69
+ # @return [::Hash{::Symbol=>::String}]
70
+ # @!attribute [rw] retry_policy
71
+ # The retry policy. The value is a hash with the following keys:
72
+ # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
73
+ # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
74
+ # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
75
+ # * `:retry_codes` (*type:* `Array<String>`) - The error codes that should
76
+ # trigger a retry.
77
+ # @return [::Hash]
78
+ # @!attribute [rw] quota_project
79
+ # A separate project against which to charge quota.
80
+ # @return [::String]
81
+ # @!attribute [rw] universe_domain
82
+ # The universe domain within which to make requests. This determines the
83
+ # default endpoint URL. The default value of nil uses the environment
84
+ # universe (usually the default "googleapis.com" universe).
85
+ # @return [::String,nil]
86
+ # @!attribute [rw] logger
87
+ # A custom logger to use for request/response debug logging, or the value
88
+ # `:default` (the default) to construct a default logger, or `nil` to
89
+ # explicitly disable logging.
90
+ # @return [::Logger,:default,nil]
91
+ #
92
+ class Configuration
93
+ extend ::Gapic::Config
94
+
95
+ # @private
96
+ # The endpoint specific to the default "googleapis.com" universe. Deprecated.
97
+ DEFAULT_ENDPOINT = <%= service.client_endpoint.inspect %>
98
+
99
+ config_attr :endpoint, nil, ::String, nil
100
+ config_attr :credentials, nil do |value|
101
+ allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Google::Auth::BaseClient, ::Signet::OAuth2::Client, nil]
102
+ allowed.any? { |klass| klass === value }
103
+ end
104
+ config_attr :scope, nil, ::String, ::Array, nil
105
+ config_attr :lib_name, nil, ::String, nil
106
+ config_attr :lib_version, nil, ::String, nil
107
+ config_attr :timeout, nil, ::Numeric, nil
108
+ config_attr :metadata, nil, ::Hash, nil
109
+ config_attr :retry_policy, nil, ::Hash, ::Proc, nil
110
+ config_attr :quota_project, nil, ::String, nil
111
+ config_attr :universe_domain, nil, ::String, nil
112
+ <%- if service.rest.mixin_should_generate_override_config? -%>
113
+
114
+ # @private
115
+ # Overrides for http bindings for the RPCs of this service
116
+ # are only used when this service is used as mixin, and only
117
+ # by the host service.
118
+ # @return [::Hash{::Symbol=>::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>}]
119
+ config_attr :bindings_override, {}, ::Hash, nil
120
+ <%- end -%>
121
+ config_attr :logger, :default, ::Logger, nil, :default
122
+
123
+ # @private
124
+ def initialize parent_config = nil
125
+ @parent_config = parent_config unless parent_config.nil?
126
+
127
+ yield self if block_given?
128
+ end
129
+
130
+ ##
131
+ # Configurations for individual RPCs
132
+ # @return [Rpcs]
133
+ #
134
+ def rpcs
135
+ @rpcs ||= begin
136
+ parent_rpcs = nil
137
+ parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config.respond_to?(:rpcs)
138
+ Rpcs.new parent_rpcs
139
+ end
140
+ end
141
+
142
+ ##
143
+ # Configuration RPC class for the <%= service.name %> API.
144
+ #
145
+ # Includes fields providing the configuration for each RPC in this service.
146
+ # Each configuration object is of type `Gapic::Config::Method` and includes
147
+ # the following configuration fields:
148
+ #
149
+ # * `timeout` (*type:* `Numeric`) - The call timeout in seconds
150
+ # * `metadata` (*type:* `Hash{Symbol=>String}`) - Additional headers
151
+ # * `retry_policy (*type:* `Hash`) - The retry policy. The policy fields
152
+ # include the following keys:
153
+ # * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
154
+ # * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
155
+ # * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
156
+ # * `:retry_codes` (*type:* `Array<String>`) - The error codes that should
157
+ # trigger a retry.
158
+ #
159
+ class Rpcs
160
+ <%- method_service.rest.methods.each do |method| -%>
161
+ ##
162
+ # RPC-specific configuration for `<%= method.name %>`
163
+ # @return [::Gapic::Config::Method]
164
+ #
165
+ attr_reader :<%= method.name %>
166
+ <%- end -%>
167
+
168
+ # @private
169
+ def initialize parent_rpcs = nil
170
+ <%- method_service.rest.methods.each do |method| -%>
171
+ <%= method.name %>_config = parent_rpcs.<%= method.name %> if parent_rpcs.respond_to? :<%= method.name %>
172
+ @<%= method.name %> = ::Gapic::Config::Method.new <%= method.name %>_config
173
+ <%- end -%>
174
+
175
+ yield self if block_given?
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,124 @@
1
+ <%- assert_locals service -%>
2
+ <% @requires = capture do %>
3
+ require "gapic/operation"
4
+ <% end %>
5
+ # Service that implements Longrunning Operations API.
6
+ class <%= service.operations_name %>
7
+ # @private
8
+ API_VERSION = "<%= service.api_version %>".freeze
9
+
10
+ # @private
11
+ DEFAULT_ENDPOINT_TEMPLATE = <%= service.client_endpoint_template.inspect %>
12
+
13
+ # @private
14
+ attr_reader :<%= service.lro_service.stub_name %>
15
+
16
+ ##
17
+ # Configuration for the <%= service.name %> Operations API.
18
+ #
19
+ # @yield [config] Configure the <%= service.operations_name %> client.
20
+ # @yieldparam config [<%= service.operations_name %>::Configuration]
21
+ #
22
+ # @return [<%= service.operations_name %>::Configuration]
23
+ #
24
+ def self.configure
25
+ @configure ||= <%= service.operations_name %>::Configuration.new
26
+ yield @configure if block_given?
27
+ @configure
28
+ end
29
+
30
+ ##
31
+ # Configure the <%= service.name %> <%= service.operations_name %> instance.
32
+ #
33
+ # The configuration is set to the derived mode, meaning that values can be changed,
34
+ # but structural changes (adding new fields, etc.) are not allowed. Structural changes
35
+ # should be made on {<%= service.operations_name %>.configure}.
36
+ #
37
+ # @yield [config] Configure the <%= service.operations_name %> client.
38
+ # @yieldparam config [<%= service.operations_name %>::Configuration]
39
+ #
40
+ # @return [<%= service.operations_name %>::Configuration]
41
+ #
42
+ def configure
43
+ yield @config if block_given?
44
+ @config
45
+ end
46
+
47
+ ##
48
+ # The effective universe domain
49
+ #
50
+ # @return [String]
51
+ #
52
+ def universe_domain
53
+ @<%= service.lro_service.stub_name %>.universe_domain
54
+ end
55
+
56
+ ##
57
+ # Create a new <%= service.operations_name %> client object.
58
+ #
59
+ # @yield [config] Configure the <%= service.client_name %> client.
60
+ # @yieldparam config [<%= service.operations_name %>::Configuration]
61
+ #
62
+ def initialize
63
+ # Create the configuration object
64
+ @config = Configuration.new <%= service.operations_name %>.configure
65
+
66
+ # Yield the configuration if needed
67
+ yield @config if block_given?
68
+
69
+ # Create credentials
70
+ credentials = @config.credentials
71
+ credentials ||= Credentials.default scope: @config.scope
72
+ if credentials.is_a?(::String) || credentials.is_a?(::Hash)
73
+ credentials = Credentials.new credentials, scope: @config.scope
74
+ end
75
+
76
+ @quota_project_id = @config.quota_project
77
+ @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
78
+
79
+ @<%= service.lro_service.stub_name %> = <%= service.operations_stub_name %>.new(
80
+ endpoint: @config.endpoint,
81
+ endpoint_template: DEFAULT_ENDPOINT_TEMPLATE,
82
+ universe_domain: @config.universe_domain,
83
+ credentials: credentials
84
+ )
85
+
86
+ # Used by an LRO wrapper for some methods of this service
87
+ @operations_client = self
88
+ end
89
+
90
+ # Service calls
91
+ <%- service.lro_service.rest.methods.each do |method| -%>
92
+
93
+ <%= indent_tail render(partial: "service/rest/client/method/def", locals: { method: method }), 2 %>
94
+ <%- end %>
95
+
96
+ <%= indent_tail render(partial: "service/rest/client/config", locals: { service: service.lro_service }), 2 %>
97
+ end
98
+
99
+ ##
100
+ # @private
101
+ # REST service stub for the Longrunning Operations API.
102
+ # Service stub contains baseline method implementations
103
+ # including transcoding, making the REST call, and deserialing the response.
104
+ class <%= service.operations_stub_name %>
105
+ def initialize endpoint:, endpoint_template:, universe_domain:, credentials:
106
+ # These require statements are intentionally placed here to initialize
107
+ # the REST modules only when it's required.
108
+ require "gapic/rest"
109
+
110
+ @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint,
111
+ endpoint_template: endpoint_template,
112
+ universe_domain: universe_domain,
113
+ credentials: credentials
114
+ end
115
+
116
+ <%- service.lro_service.rest.methods.each do |method| -%>
117
+ <%= indent_tail render(partial: "service/rest/service_stub/method/def", locals: { method: method, service_stub_name: service.operations_stub_name }), 2 %>
118
+
119
+ <%- end %>
120
+ <%- service.lro_service.rest.methods.each do |method| -%>
121
+ <%= indent_tail render(partial: "service/rest/service_stub/grpc_transcoding_method/def", locals: { method: method }), 2 %>
122
+
123
+ <%- end %>
124
+ end
@@ -1,17 +1,23 @@
1
1
  <%- assert_locals method -%>
2
2
  ##
3
3
  <%- if method.doc_description -%>
4
- <%= indent method.doc_description, "# " %>
4
+ <%= indent method.doc_description(transport: :rest), "# " %>
5
5
  #
6
6
  <%- end -%>
7
7
  <%= render partial: "service/rest/client/method/docs/request", locals: { method: method } -%>
8
8
  <%= render partial: "service/rest/client/method/docs/result", locals: { method: method } -%>
9
9
  #
10
10
  <%= render partial: "service/rest/client/method/docs/error", locals: { method: method } -%>
11
+ #
12
+ <%= render partial: "service/rest/client/method/docs/snippets", locals: { method: method } -%>
11
13
  def <%= method.name %> request, options = nil
12
14
  <%= indent render(partial: "service/client/method/def/request", locals: { method: method }), 2 %>
13
15
 
14
16
  <%= indent render(partial: "service/rest/client/method/def/options_defaults", locals: { method: method }), 2 %>
17
+ <%- if method.service.rest.is_main_mixin_service? -%>
18
+
19
+ bindings_override = @config.bindings_override["<%= method.grpc_full_name %>"]
20
+ <%- end -%>
15
21
 
16
22
  <%= indent render(partial: "service/rest/client/method/def/response", locals: { method: method }), 2 %>
17
23
  <%= render partial: "service/rest/client/method/def/rescue", locals: { method: method } -%>
@@ -5,14 +5,19 @@ options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
5
5
  # Customize the options with defaults
6
6
  call_metadata = @config.rpcs.<%= method.name %>.metadata.to_h
7
7
 
8
- # Set x-goog-api-client header
8
+ # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers
9
9
  call_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
12
  transports_version_send: [:rest]
13
13
 
14
+ call_metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty?
15
+ call_metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
16
+
14
17
  options.apply_defaults timeout: @config.rpcs.<%= method.name %>.timeout,
15
- metadata: call_metadata
18
+ metadata: call_metadata,
19
+ retry_policy: @config.rpcs.<%= method.name %>.retry_policy
16
20
 
17
21
  options.apply_defaults timeout: @config.timeout,
18
- metadata: @config.metadata
22
+ metadata: @config.metadata,
23
+ retry_policy: @config.retry_policy
@@ -0,0 +1,12 @@
1
+ <%- assert_locals method -%>
2
+ <%- if method.rest.paged? -%>
3
+ <%= render partial: "service/rest/client/method/def/response_paged", locals: { method: method } -%>
4
+ <%- elsif method.rest.nonstandard_lro? -%>
5
+ <%= render partial: "service/rest/client/method/def/response_nonstandard_lro", locals: { method: method } -%>
6
+ <%- elsif method.rest.server_streaming? -%>
7
+ <%= render partial: "service/rest/client/method/def/response_server_streaming", locals: { method: method } -%>
8
+ <%- elsif method.lro? -%>
9
+ <%= render partial: "service/rest/client/method/def/response_normal_lro", locals: { method: method } -%>
10
+ <%- else -%>
11
+ <%= render partial: "service/rest/client/method/def/response_normal", locals: { method: method } -%>
12
+ <%- end -%>
@@ -0,0 +1,24 @@
1
+ <%- assert_locals method -%>
2
+ <%- boverr_str = method.service.rest.is_main_mixin_service? ? ", bindings_override: bindings_override" : "" -%>
3
+ @<%= method.service.stub_name %>.<%= method.name %> request, options<%= boverr_str %> do |result, response|
4
+ result = <%= method.rest.nonstandard_lro_client.helper_type %>.create_operation(
5
+ operation: result,
6
+ client: <%= method.rest.nonstandard_lro_client.client_var_name %>,
7
+ <%- if method.lro.operation_request_fields.any? -%>
8
+ request_values: {
9
+ <%- method.lro.operation_request_fields.each_with_index do |(field_from, field_to), i| -%>
10
+ <%- if i == method.lro.operation_request_fields.length - 1 -%>
11
+ "<%= field_to %>" => request.<%= field_from %>
12
+ <%- else -%>
13
+ "<%= field_to %>" => request.<%= field_from %>,
14
+ <%- end -%>
15
+ <%- end -%>
16
+ },
17
+ <%- else -%>
18
+ request_values: {},
19
+ <%- end -%>
20
+ options: options
21
+ )
22
+ yield result, response if block_given?
23
+ throw :response, result
24
+ end
@@ -0,0 +1,5 @@
1
+ <%- assert_locals method -%>
2
+ <%- boverr_str = method.service.rest.is_main_mixin_service? ? ", bindings_override: bindings_override" : "" -%>
3
+ @<%= method.service.stub_name %>.<%= method.name %> request, options<%= boverr_str %> do |result, operation|
4
+ yield result, operation if block_given?
5
+ end