gapic-generator 0.11.0 → 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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +299 -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 -34
  12. data/lib/gapic/generators/default_generator_parameters.rb +9 -3
  13. data/lib/gapic/grpc_service_config/parser.rb +2 -2
  14. data/lib/gapic/model/api_metadata.rb +173 -0
  15. data/lib/gapic/model/method/http_annotation.rb +158 -60
  16. data/lib/gapic/model/method/lro.rb +8 -5
  17. data/lib/gapic/model/method/routing.rb +3 -18
  18. data/lib/gapic/model/mixins.rb +76 -10
  19. data/lib/gapic/model/service/nonstandard_lro_provider.rb +10 -11
  20. data/lib/gapic/package_snippets.rb +159 -0
  21. data/lib/gapic/path_pattern/parser.rb +11 -2
  22. data/lib/gapic/path_pattern/pattern.rb +18 -1
  23. data/lib/gapic/path_pattern/segment.rb +11 -4
  24. data/lib/gapic/presenters/enum_presenter.rb +14 -0
  25. data/lib/gapic/presenters/enum_value_presenter.rb +4 -1
  26. data/lib/gapic/presenters/field_presenter.rb +78 -21
  27. data/lib/gapic/presenters/gem_presenter.rb +109 -35
  28. data/lib/gapic/presenters/message_presenter.rb +15 -0
  29. data/lib/gapic/presenters/method/http_binding_presenter.rb +128 -0
  30. data/lib/gapic/presenters/method/rest_pagination_info.rb +25 -16
  31. data/lib/gapic/presenters/method_presenter.rb +109 -35
  32. data/lib/gapic/presenters/method_rest_presenter.rb +70 -137
  33. data/lib/gapic/presenters/package_presenter.rb +63 -18
  34. data/lib/gapic/presenters/resource_presenter.rb +9 -3
  35. data/lib/gapic/presenters/service/lro_client_presenter.rb +14 -14
  36. data/lib/gapic/presenters/service/mixin_client_presenter.rb +89 -0
  37. data/lib/gapic/presenters/service/sub_client_presenter.rb +84 -0
  38. data/lib/gapic/presenters/service_presenter.rb +183 -31
  39. data/lib/gapic/presenters/service_rest_presenter.rb +180 -27
  40. data/lib/gapic/presenters/snippet/client_call_presenter.rb +82 -0
  41. data/lib/gapic/presenters/snippet/client_initialization_presenter.rb +87 -0
  42. data/lib/gapic/presenters/snippet/declaration_presenter.rb +91 -0
  43. data/lib/gapic/presenters/snippet/expression_presenter.rb +135 -0
  44. data/lib/gapic/presenters/snippet/iteration_presenter.rb +118 -0
  45. data/lib/gapic/presenters/snippet/parameter_presenter.rb +67 -0
  46. data/lib/gapic/presenters/snippet/request_initialization_presenters.rb +202 -0
  47. data/lib/gapic/presenters/snippet/response_handling_presenters.rb +329 -0
  48. data/lib/gapic/presenters/snippet/statement_presenter.rb +134 -0
  49. data/lib/gapic/presenters/snippet/type_presenter.rb +98 -0
  50. data/lib/gapic/presenters/snippet_presenter.rb +199 -10
  51. data/lib/gapic/presenters.rb +2 -0
  52. data/lib/gapic/runner.rb +1 -1
  53. data/lib/gapic/schema/api.rb +49 -3
  54. data/lib/gapic/schema/loader.rb +67 -22
  55. data/lib/gapic/schema/parameter_schema.rb +8 -8
  56. data/lib/gapic/schema/proto_tools.rb +193 -0
  57. data/lib/gapic/schema/request_param_parser.rb +5 -7
  58. data/lib/gapic/schema/service_config_parser.rb +38 -4
  59. data/lib/gapic/schema/wrappers.rb +192 -31
  60. data/lib/gapic/uri_template/parser.rb +15 -7
  61. data/lib/google/cloud/tools/snippetgen/configlanguage/v1/snippet_config_language_pb.rb +104 -0
  62. data/lib/google/cloud/tools/snippetgen/snippetindex/v1/snippet_index_pb.rb +58 -0
  63. data/lib/google/protobuf/compiler/plugin_pb.rb +47 -0
  64. data/templates/default/binding_override.text.erb +6 -0
  65. data/templates/default/gem/gemfile.text.erb +12 -0
  66. data/templates/default/gem/{gemspec.erb → gemspec.text.erb} +3 -11
  67. data/templates/default/gem/{readme.erb → readme.text.erb} +10 -6
  68. data/templates/default/gem/{rubocop.erb → rubocop.text.erb} +3 -0
  69. data/templates/default/gem/{test_helper.erb → test_helper.text.erb} +4 -2
  70. data/templates/default/gem/toys.text.erb +12 -0
  71. data/templates/default/helpers/default_helper.rb +33 -1
  72. data/templates/default/lib/_binding_override.text.erb +49 -0
  73. data/templates/default/lib/{_package.erb → _package.text.erb} +6 -9
  74. data/templates/default/lib/_package_rest.text.erb +24 -0
  75. data/templates/default/lib/{_service.erb → _service.text.erb} +11 -23
  76. data/templates/default/lib/package/_self_configure.text.erb +16 -0
  77. data/templates/default/lib/package/_self_configure_defaults.text.erb +13 -0
  78. data/templates/default/lib/package/self_configure/_binding_default.text.erb +15 -0
  79. data/templates/default/lib/rest/_rest.text.erb +46 -0
  80. data/templates/default/package_rest.text.erb +6 -0
  81. data/templates/default/proto_docs/_deprecated.text.erb +9 -0
  82. data/templates/default/proto_docs/{_enum.erb → _enum.text.erb} +1 -0
  83. data/templates/default/proto_docs/{_message.erb → _message.text.erb} +2 -0
  84. data/templates/default/service/client/{_client.erb → _client.text.erb} +60 -12
  85. data/templates/default/service/client/{_config.erb → _config.text.erb} +39 -8
  86. data/templates/default/service/client/{_operations.erb → _operations.text.erb} +24 -3
  87. data/templates/default/service/client/method/{_def.erb → _def.text.erb} +2 -2
  88. data/templates/default/service/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +2 -1
  89. data/templates/default/service/client/method/def/_request_normal.text.erb +18 -0
  90. data/templates/default/service/client/method/def/_request_streaming.text.erb +23 -0
  91. data/templates/default/service/client/method/def/{_response.erb → _response.text.erb} +2 -0
  92. data/templates/default/service/client/method/def/{_response_nonstandard_lro.erb → _response_nonstandard_lro.text.erb} +1 -1
  93. data/templates/default/service/client/method/def/_response_normal.text.erb +4 -0
  94. data/templates/default/service/client/method/def/{_response_normal.erb → _response_normal_lro.text.erb} +1 -3
  95. data/templates/default/service/client/method/def/{_response_paged.erb → _response_paged.text.erb} +1 -1
  96. data/templates/default/service/client/method/docs/{_request_normal.erb → _request_normal.text.erb} +1 -1
  97. data/templates/default/service/client/method/docs/_snippets.text.erb +6 -0
  98. data/templates/default/service/client/resource/_def.text.erb +7 -0
  99. data/templates/default/service/nonstandard_lro.text.erb +6 -0
  100. data/templates/default/service/rest/client/{_client.erb → _client.text.erb} +82 -13
  101. data/templates/default/service/rest/client/_config.text.erb +178 -0
  102. data/templates/default/service/rest/client/_operations.text.erb +124 -0
  103. data/templates/default/service/rest/client/method/{_def.erb → _def.text.erb} +7 -1
  104. data/templates/default/service/rest/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +8 -3
  105. data/templates/default/service/rest/client/method/def/{_response.erb → _response.text.erb} +4 -0
  106. data/templates/default/service/rest/client/method/def/{_response_nonstandard_lro.erb → _response_nonstandard_lro.text.erb} +5 -4
  107. data/templates/default/service/rest/client/method/def/_response_normal.text.erb +5 -0
  108. data/templates/default/service/rest/client/method/def/_response_normal_lro.text.erb +7 -0
  109. data/templates/default/service/rest/client/method/def/_response_paged.text.erb +7 -0
  110. data/templates/default/service/rest/client/method/def/_response_server_streaming.text.erb +11 -0
  111. data/templates/default/service/rest/client/method/docs/{_request.erb → _request.text.erb} +1 -3
  112. data/templates/default/service/rest/client/method/docs/_result.text.erb +10 -0
  113. data/templates/default/service/rest/client/method/docs/_snippets.text.erb +6 -0
  114. data/templates/default/service/{nonstandard_lro.erb → rest/nonstandard_lro.text.erb} +1 -1
  115. data/templates/default/service/rest/operations.text.erb +6 -0
  116. data/templates/default/service/rest/service_stub/_service_stub.text.erb +63 -0
  117. data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.text.erb +37 -0
  118. data/templates/default/service/rest/service_stub/method/_def.text.erb +35 -0
  119. data/templates/default/service/rest/service_stub/method/def/_response.text.erb +37 -0
  120. data/templates/default/service/rest/test/{client.erb → client.text.erb} +3 -3
  121. data/templates/default/service/rest/test/method/_assert_response.text.erb +2 -0
  122. data/templates/default/service/rest/test/method/{_configure.erb → _configure.text.erb} +3 -2
  123. data/templates/default/service/rest/test/method/_normal.text.erb +60 -0
  124. data/templates/default/service/rest/test/method/_server.text.erb +60 -0
  125. data/templates/default/service/rest/test/method/{_setup.erb → _setup.text.erb} +26 -10
  126. data/templates/default/service/test/{_resource.erb → _resource.text.erb} +1 -1
  127. data/templates/default/service/test/{client.erb → client.text.erb} +3 -2
  128. data/templates/default/service/test/client_paths.text.erb +33 -0
  129. data/templates/default/service/test/method/{_bidi.erb → _bidi.text.erb} +1 -1
  130. data/templates/default/service/test/method/{_client.erb → _client.text.erb} +1 -1
  131. data/templates/default/service/test/method/{_configure.erb → _configure.text.erb} +2 -1
  132. data/templates/default/service/test/method/{_normal.erb → _normal.text.erb} +1 -1
  133. data/templates/default/service/test/method/{_server.erb → _server.text.erb} +1 -1
  134. data/templates/default/service/test/method/{_setup.erb → _setup.text.erb} +19 -2
  135. data/templates/default/snippets/{gemfile.erb → gemfile.text.erb} +2 -2
  136. data/templates/default/snippets/snippet/_body.text.erb +24 -0
  137. data/templates/default/snippets/snippet/_inline.text.erb +11 -0
  138. data/templates/default/snippets/snippet/_standalone.text.erb +25 -0
  139. data/templates/default/snippets/{standalone.erb → standalone.text.erb} +1 -1
  140. metadata +198 -273
  141. data/lib/google/api/annotations.pb.rb +0 -39
  142. data/lib/google/api/auth.pb.rb +0 -75
  143. data/lib/google/api/backend.pb.rb +0 -59
  144. data/lib/google/api/billing.pb.rb +0 -53
  145. data/lib/google/api/client.pb.rb +0 -43
  146. data/lib/google/api/context.pb.rb +0 -47
  147. data/lib/google/api/control.pb.rb +0 -38
  148. data/lib/google/api/documentation.pb.rb +0 -56
  149. data/lib/google/api/endpoint.pb.rb +0 -42
  150. data/lib/google/api/field_behavior.pb.rb +0 -51
  151. data/lib/google/api/http.pb.rb +0 -60
  152. data/lib/google/api/label.pb.rb +0 -49
  153. data/lib/google/api/launch_stage.pb.rb +0 -37
  154. data/lib/google/api/log.pb.rb +0 -47
  155. data/lib/google/api/logging.pb.rb +0 -48
  156. data/lib/google/api/metric.pb.rb +0 -90
  157. data/lib/google/api/monitored_resource.pb.rb +0 -68
  158. data/lib/google/api/monitoring.pb.rb +0 -48
  159. data/lib/google/api/quota.pb.rb +0 -63
  160. data/lib/google/api/resource.pb.rb +0 -80
  161. data/lib/google/api/routing.pb.rb +0 -58
  162. data/lib/google/api/service.pb.rb +0 -90
  163. data/lib/google/api/source_info.pb.rb +0 -44
  164. data/lib/google/api/system_parameter.pb.rb +0 -51
  165. data/lib/google/api/usage.pb.rb +0 -47
  166. data/lib/google/cloud/extended_operations.pb.rb +0 -57
  167. data/lib/google/longrunning/operations.pb.rb +0 -115
  168. data/lib/google/protobuf/any.pb.rb +0 -40
  169. data/lib/google/protobuf/api.pb.rb +0 -69
  170. data/lib/google/protobuf/compiler/plugin.pb.rb +0 -79
  171. data/lib/google/protobuf/descriptor.pb.rb +0 -360
  172. data/lib/google/protobuf/duration.pb.rb +0 -41
  173. data/lib/google/protobuf/empty.pb.rb +0 -36
  174. data/lib/google/protobuf/source_context.pb.rb +0 -39
  175. data/lib/google/protobuf/struct.pb.rb +0 -65
  176. data/lib/google/protobuf/type.pb.rb +0 -128
  177. data/lib/google/protobuf/wrappers.pb.rb +0 -80
  178. data/lib/google/rpc/status.pb.rb +0 -46
  179. data/templates/default/gem/gemfile.erb +0 -4
  180. data/templates/default/lib/rest/_rest.erb +0 -9
  181. data/templates/default/service/client/method/def/_request_normal.erb +0 -4
  182. data/templates/default/service/client/method/def/_request_streaming.erb +0 -9
  183. data/templates/default/service/client/method/docs/_deprecated.erb +0 -5
  184. data/templates/default/service/client/method/docs/_snippets.erb +0 -6
  185. data/templates/default/service/client/resource/_def.erb +0 -6
  186. data/templates/default/service/rest/client/_config.erb +0 -122
  187. data/templates/default/service/rest/client/method/def/_response_normal.erb +0 -6
  188. data/templates/default/service/rest/client/method/def/_response_paged.erb +0 -7
  189. data/templates/default/service/rest/client/method/docs/_result.erb +0 -6
  190. data/templates/default/service/rest/service_stub/_service_stub.erb +0 -25
  191. data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.erb +0 -24
  192. data/templates/default/service/rest/service_stub/method/_def.erb +0 -20
  193. data/templates/default/service/rest/service_stub/method/def/_response.erb +0 -17
  194. data/templates/default/service/rest/test/method/_assert_response.erb +0 -2
  195. data/templates/default/service/rest/test/method/_normal.erb +0 -71
  196. data/templates/default/service/test/client_paths.erb +0 -15
  197. data/templates/default/snippets/snippet/_structure.erb +0 -71
  198. /data/gem_templates/{binary.erb → binary.text.erb} +0 -0
  199. /data/gem_templates/{dockerfile.erb → dockerfile.text.erb} +0 -0
  200. /data/gem_templates/{entrypoint.erb → entrypoint.text.erb} +0 -0
  201. /data/gem_templates/{gapic_sh.erb → gapic_sh.text.erb} +0 -0
  202. /data/gem_templates/{gemfile.erb → gemfile.text.erb} +0 -0
  203. /data/gem_templates/{gemspec.erb → gemspec.text.erb} +0 -0
  204. /data/gem_templates/{generator.erb → generator.text.erb} +0 -0
  205. /data/gem_templates/{gitignore.erb → gitignore.text.erb} +0 -0
  206. /data/gem_templates/{rakefile.erb → rakefile.text.erb} +0 -0
  207. /data/gem_templates/{readme.erb → readme.text.erb} +0 -0
  208. /data/gem_templates/{rubocop.erb → rubocop.text.erb} +0 -0
  209. /data/gem_templates/shared/{_header.erb → _header.text.erb} +0 -0
  210. /data/gem_templates/shared/{_license.erb → _license.text.erb} +0 -0
  211. /data/gem_templates/shared/{_warning.erb → _warning.text.erb} +0 -0
  212. /data/gem_templates/{test_generator.erb → test_generator.text.erb} +0 -0
  213. /data/gem_templates/{test_helper.erb → test_helper.text.erb} +0 -0
  214. /data/gem_templates/{version.erb → version.text.erb} +0 -0
  215. /data/templates/default/gem/{_version.erb → _version.text.erb} +0 -0
  216. /data/templates/default/gem/{changelog.erb → changelog.text.erb} +0 -0
  217. /data/templates/default/gem/{entrypoint.erb → entrypoint.text.erb} +0 -0
  218. /data/templates/default/gem/{gapic_metadata_json.erb → gapic_metadata_json.text.erb} +0 -0
  219. /data/templates/default/gem/{gitignore.erb → gitignore.text.erb} +0 -0
  220. /data/templates/default/gem/{license.erb → license.text.erb} +0 -0
  221. /data/templates/default/gem/{rakefile.erb → rakefile.text.erb} +0 -0
  222. /data/templates/default/gem/{version.erb → version.text.erb} +0 -0
  223. /data/templates/default/gem/{yardopts.erb → yardopts.text.erb} +0 -0
  224. /data/templates/default/layouts/{_ruby.erb → _ruby.text.erb} +0 -0
  225. /data/templates/default/{package.erb → package.text.erb} +0 -0
  226. /data/templates/default/proto_docs/{_proto_file.erb → _proto_file.text.erb} +0 -0
  227. /data/templates/default/proto_docs/{proto_file.erb → proto_file.text.erb} +0 -0
  228. /data/templates/default/proto_docs/{readme.erb → readme.text.erb} +0 -0
  229. /data/templates/default/service/{_helpers.erb → _helpers.text.erb} +0 -0
  230. /data/templates/default/service/client/{_credentials.erb → _credentials.text.erb} +0 -0
  231. /data/templates/default/service/client/{_nonstandard_lro.erb → _nonstandard_lro.text.erb} +0 -0
  232. /data/templates/default/service/client/{_paths.erb → _paths.text.erb} +0 -0
  233. /data/templates/default/service/client/{_requires.erb → _requires.text.erb} +0 -0
  234. /data/templates/default/service/client/{_resource.erb → _resource.text.erb} +0 -0
  235. /data/templates/default/service/client/{_self_configure.erb → _self_configure.text.erb} +0 -0
  236. /data/templates/default/service/client/{_self_configure_defaults.erb → _self_configure_defaults.text.erb} +0 -0
  237. /data/templates/default/service/client/method/def/{_request.erb → _request.text.erb} +0 -0
  238. /data/templates/default/service/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
  239. /data/templates/default/service/client/method/def/{_routing_params.erb → _routing_params.text.erb} +0 -0
  240. /data/templates/default/service/client/method/docs/{_error.erb → _error.text.erb} +0 -0
  241. /data/templates/default/service/client/method/docs/{_request.erb → _request.text.erb} +0 -0
  242. /data/templates/default/service/client/method/docs/{_request_field.erb → _request_field.text.erb} +0 -0
  243. /data/templates/default/service/client/method/docs/{_request_streaming.erb → _request_streaming.text.erb} +0 -0
  244. /data/templates/default/service/client/method/docs/{_response.erb → _response.text.erb} +0 -0
  245. /data/templates/default/service/client/method/docs/{_sample.erb → _sample.text.erb} +0 -0
  246. /data/templates/default/service/client/method/docs/{_sample_response.erb → _sample_response.text.erb} +0 -0
  247. /data/templates/default/service/client/method/docs/{_samples.erb → _samples.text.erb} +0 -0
  248. /data/templates/default/service/client/method/docs/request_field/{_arg.erb → _arg.text.erb} +0 -0
  249. /data/templates/default/service/client/method/docs/request_field/{_hash.erb → _hash.text.erb} +0 -0
  250. /data/templates/default/service/client/method/docs/sample_response/{_comment.erb → _comment.text.erb} +0 -0
  251. /data/templates/default/service/client/method/docs/sample_response/{_define.erb → _define.text.erb} +0 -0
  252. /data/templates/default/service/client/method/docs/sample_response/{_loop.erb → _loop.text.erb} +0 -0
  253. /data/templates/default/service/client/method/docs/sample_response/{_print.erb → _print.text.erb} +0 -0
  254. /data/templates/default/service/client/method/docs/sample_response/{_write_file.erb → _write_file.text.erb} +0 -0
  255. /data/templates/default/service/client/resource/{_doc.erb → _doc.text.erb} +0 -0
  256. /data/templates/default/service/client/resource/{_multi.erb → _multi.text.erb} +0 -0
  257. /data/templates/default/service/client/resource/{_single.erb → _single.text.erb} +0 -0
  258. /data/templates/default/service/{client.erb → client.text.erb} +0 -0
  259. /data/templates/default/service/{credentials.erb → credentials.text.erb} +0 -0
  260. /data/templates/default/service/{operations.erb → operations.text.erb} +0 -0
  261. /data/templates/default/service/{paths.erb → paths.text.erb} +0 -0
  262. /data/templates/default/service/rest/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
  263. /data/templates/default/service/rest/client/method/docs/{_error.erb → _error.text.erb} +0 -0
  264. /data/templates/default/service/rest/{client.erb → client.text.erb} +0 -0
  265. /data/templates/default/service/rest/{grpc_transcoding.erb → grpc_transcoding.text.erb} +0 -0
  266. /data/templates/default/service/rest/service_stub/grpc_transcoding_method/def/{_query_string_param.erb → _query_string_param.text.erb} +0 -0
  267. /data/templates/default/service/rest/service_stub/method/def/{_request.erb → _request.text.erb} +0 -0
  268. /data/templates/default/service/rest/{service_stub.erb → service_stub.text.erb} +0 -0
  269. /data/templates/default/service/{rest.erb → rest.text.erb} +0 -0
  270. /data/templates/default/service/test/{client_operations.erb → client_operations.text.erb} +0 -0
  271. /data/templates/default/service/test/method/{_assert_response.erb → _assert_response.text.erb} +0 -0
  272. /data/templates/default/service/test/{smoke.erb → smoke.text.erb} +0 -0
  273. /data/templates/default/{service.erb → service.text.erb} +0 -0
  274. /data/templates/default/shared/{_header.erb → _header.text.erb} +0 -0
  275. /data/templates/default/shared/{_license.erb → _license.text.erb} +0 -0
  276. /data/templates/default/shared/{_warning.erb → _warning.text.erb} +0 -0
@@ -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
@@ -3,6 +3,10 @@
3
3
  <%= render partial: "service/rest/client/method/def/response_paged", locals: { method: method } -%>
4
4
  <%- elsif method.rest.nonstandard_lro? -%>
5
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 } -%>
6
10
  <%- else -%>
7
11
  <%= render partial: "service/rest/client/method/def/response_normal", locals: { method: method } -%>
8
12
  <%- end -%>
@@ -1,8 +1,9 @@
1
1
  <%- assert_locals method -%>
2
- @<%= method.service.stub_name %>.<%= method.name %> request, options do |result, response|
3
- result = <%= method.nonstandard_lro_client.helper_type %>.create_operation(
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(
4
5
  operation: result,
5
- client: <%= method.nonstandard_lro_client.client_var_name %>,
6
+ client: <%= method.rest.nonstandard_lro_client.client_var_name %>,
6
7
  <%- if method.lro.operation_request_fields.any? -%>
7
8
  request_values: {
8
9
  <%- method.lro.operation_request_fields.each_with_index do |(field_from, field_to), i| -%>
@@ -19,5 +20,5 @@
19
20
  options: options
20
21
  )
21
22
  yield result, response if block_given?
22
- return result
23
+ throw :response, result
23
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
@@ -0,0 +1,7 @@
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
+ result = ::Gapic::Operation.new result, <%= method.service.lro_client_ivar %>, options: options
5
+ yield result, operation if block_given?
6
+ throw :response, result
7
+ end
@@ -0,0 +1,7 @@
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
+ result = ::Gapic::Rest::PagedEnumerable.new @<%= method.service.stub_name %>, :<%= method.name %>, "<%= method.rest.paged_response_repeated_field_name %>", request, result, options
5
+ yield result, operation if block_given?
6
+ throw :response, result
7
+ end
@@ -0,0 +1,11 @@
1
+ <%- assert_locals method -%>
2
+
3
+ ::Gapic::Rest::ServerStream.new(
4
+ <%= method.return_type %>,
5
+ ::Gapic::Rest::ThreadedEnumerator.new do |in_q, out_q|
6
+ @<%= method.service.stub_name %>.<%= method.name %> request, options do |chunk|
7
+ in_q.deq
8
+ out_q.enq chunk
9
+ end
10
+ end
11
+ )
@@ -8,8 +8,6 @@
8
8
  # parameters, or to keep all the default parameter values, pass an empty Hash.
9
9
  # @param options [::Gapic::CallOptions, ::Hash]
10
10
  # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
11
- # Note: currently retry functionality is not implemented. While it is possible
12
- # to set it using ::Gapic::CallOptions, it will not be applied
13
11
  <%-if method.arguments.any?-%>
14
12
  #
15
13
  <%- arg_list = method.arguments.map { |arg| "#{arg.name}: nil"}.join ", " -%>
@@ -21,7 +19,7 @@
21
19
  <%- method.arguments.each do |arg| -%>
22
20
  # @param <%= arg.name %> [<%= arg.doc_types %>]
23
21
  <%- if arg.doc_description -%>
24
- <%= indent arg.doc_description, "# " %>
22
+ <%= indent arg.doc_description(transport: :rest), "# " %>
25
23
  <%- end -%>
26
24
  <%- end -%>
27
25
  <%- end -%>
@@ -0,0 +1,10 @@
1
+ <%- assert_locals method -%>
2
+ <%- if method.server_streaming? -%>
3
+ # @return [::Enumerable<<%= method.rest.doc_response_type %>>]
4
+ <%- else -%>
5
+ # @yield [result, operation] Access the result along with the TransportOperation object
6
+ # @yieldparam result [<%= method.rest.doc_response_type %>]
7
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
8
+ #
9
+ # @return [<%= method.rest.doc_response_type %>]
10
+ <%- 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: :rest) }), "# " %>
5
+ #
6
+ <%- end -%>
@@ -2,5 +2,5 @@
2
2
  <%= render partial: "service/client/nonstandard_lro",
3
3
  layout: "layouts/ruby",
4
4
  locals: { service: service,
5
- namespace: service.methods_rest_bindings? ? service.rest.service_name_full : service.service_name_full }
5
+ namespace: service.rest.service_name_full }
6
6
  %>
@@ -0,0 +1,6 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "service/rest/client/operations",
3
+ layout: "layouts/ruby",
4
+ locals: { service: service.rest,
5
+ namespace: service.rest.service_name_full }
6
+ %>
@@ -0,0 +1,63 @@
1
+ <%- assert_locals service -%>
2
+ <% @requires = capture do %>
3
+ require "<%= service.proto_service_require %>"
4
+ <% end %>
5
+ ##
6
+ # REST service stub for the <%= service.name %> service.
7
+ # Service stub contains baseline method implementations
8
+ # including transcoding, making the REST call, and deserialing the response.
9
+ #
10
+ <%= render partial: "proto_docs/deprecated", locals: { presenter: service } -%>
11
+ class <%= service.rest.service_stub_name %>
12
+ # @private
13
+ def initialize endpoint:, endpoint_template:, universe_domain:, credentials:, logger:
14
+ # These require statements are intentionally placed here to initialize
15
+ # the REST modules only when it's required.
16
+ require "gapic/rest"
17
+
18
+ @client_stub = ::Gapic::Rest::ClientStub.new endpoint: endpoint,
19
+ endpoint_template: endpoint_template,
20
+ universe_domain: universe_domain,
21
+ credentials: credentials,
22
+ numeric_enums: <%= service.rest.numeric_enums? %>,
23
+ service_name: self.class,
24
+ raise_faraday_errors: false,
25
+ logger: logger
26
+ end
27
+
28
+ ##
29
+ # The effective universe domain
30
+ #
31
+ # @return [String]
32
+ #
33
+ def universe_domain
34
+ @client_stub.universe_domain
35
+ end
36
+
37
+ ##
38
+ # The effective endpoint
39
+ #
40
+ # @return [String]
41
+ #
42
+ def endpoint
43
+ @client_stub.endpoint
44
+ end
45
+
46
+ ##
47
+ # The logger used for request/response debug logging.
48
+ #
49
+ # @return [Logger]
50
+ #
51
+ def logger stub: false
52
+ stub ? @client_stub.stub_logger : @client_stub.logger
53
+ end
54
+
55
+ <%- service.rest.methods.each do |method| -%>
56
+ <%= indent_tail render(partial: "service/rest/service_stub/method/def", locals: { method: method, service_stub_name: service.rest.service_stub_name }), 2 %>
57
+
58
+ <%- end %>
59
+ <%- service.rest.methods.each do |method| -%>
60
+ <%= indent_tail render(partial: "service/rest/service_stub/grpc_transcoding_method/def", locals: { method: method }), 2 %>
61
+
62
+ <%- end %>
63
+ end
@@ -0,0 +1,37 @@
1
+ <%- assert_locals method -%>
2
+ ##
3
+ # @private
4
+ #
5
+ # GRPC transcoding helper method for the <%= method.name %> REST call
6
+ #
7
+ # @param request_pb [<%= method.request_type %>]
8
+ # A request object representing the call parameters. Required.
9
+ <%- if method.service.rest.is_main_mixin_service? -%>
10
+ # @param bindings_override [::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>, nil]
11
+ # Binding overrides for the transcoding.
12
+ <%- end %>
13
+ # @return [Array(String, [String, nil], Hash{String => String})]
14
+ # Uri, Body, Query string parameters
15
+ <%- boverr_str = method.service.rest.is_main_mixin_service? ? ", bindings_override: nil" : "" -%>
16
+ def self.<%= method.rest.transcoding_helper_name %> request_pb<%= boverr_str %>
17
+ <%- if method.service.rest.is_main_mixin_service? -%>
18
+ transcoder = Gapic::Rest::GrpcTranscoder.new(bindings_override) if bindings_override
19
+ <%- end %>
20
+ <%- assignment = method.service.rest.is_main_mixin_service? ? "||=" : "=" -%>
21
+ transcoder <%= assignment %> Gapic::Rest::GrpcTranscoder.new
22
+ <%- method.http_bindings.each do |http_binding| -%>
23
+ .with_bindings(
24
+ uri_method: :<%= http_binding.verb %>,
25
+ uri_template: "<%= http_binding.uri_for_transcoding %>",
26
+ <%- if http_binding.body? -%>
27
+ body: "<%= http_binding.body %>",
28
+ <%- end -%>
29
+ matches: [
30
+ <%- http_binding.routing_params_transcoder_matches_strings.each do |match_str| -%>
31
+ <%= match_str %>
32
+ <%- end -%>
33
+ ]
34
+ )
35
+ <%- end %>
36
+ transcoder.transcode request_pb
37
+ end
@@ -0,0 +1,35 @@
1
+ <%- assert_locals method -%>
2
+ ##
3
+ # Baseline implementation for the <%= method.name %> REST call
4
+ #
5
+ # @param request_pb [<%= method.rest.request_type %>]
6
+ # A request object representing the call parameters. Required.
7
+ # @param options [::Gapic::CallOptions]
8
+ # Overrides the default settings for this call, e.g, timeout, retries etc. Optional.
9
+ <%- if method.service.rest.is_main_mixin_service? -%>
10
+ # @param bindings_override [::Array<::Gapic::Rest::GrpcTranscoder::HttpBinding>, nil]
11
+ # Binding overrides for the transcoding. Only used internally.
12
+ <%- end %>
13
+ #
14
+ <%- if method.server_streaming? -%>
15
+ # @yieldparam chunk [::String] The chunk of data received during server streaming.
16
+ #
17
+ # @return [::Gapic::Rest::TransportOperation]
18
+ <%- else -%>
19
+ # @yield [result, operation] Access the result along with the TransportOperation object
20
+ # @yieldparam result [<%= method.rest.return_type %>]
21
+ # @yieldparam operation [::Gapic::Rest::TransportOperation]
22
+ #
23
+ # @return [<%= method.rest.return_type %>]
24
+ # A result object deserialized from the server's reply
25
+ <%- end -%>
26
+ <%- if method.server_streaming? -%>
27
+ def <%= method.name %> request_pb, options = nil, &block
28
+ <%- else -%>
29
+ <%- boverr_str = method.service.rest.is_main_mixin_service? ? ", bindings_override: nil" : "" -%>
30
+ def <%= method.name %> request_pb, options = nil<%= boverr_str %>
31
+ <%- end -%>
32
+ <%= indent render(partial: "service/rest/service_stub/method/def/request", locals: { method: method }), 2 %>
33
+
34
+ <%= indent render(partial: "service/rest/service_stub/method/def/response", locals: { method: method, service_stub_name: service_stub_name }), 2 %>
35
+ end
@@ -0,0 +1,37 @@
1
+ <%- assert_locals method, service_stub_name -%>
2
+ <%- boverr_str = method.service.rest.is_main_mixin_service? ? ", bindings_override: bindings_override" : "" -%>
3
+ verb, uri, query_string_params, body = <%= service_stub_name %>.<%= method.rest.transcoding_helper_name %> request_pb<%= boverr_str %>
4
+ query_string_params = if query_string_params.any?
5
+ query_string_params.to_h { |p| p.split "=", 2 }
6
+ else
7
+ {}
8
+ end
9
+
10
+ <%- if method.server_streaming? -%>
11
+ response = @client_stub.make_http_request(
12
+ verb,
13
+ uri: uri,
14
+ body: body || "",
15
+ params: query_string_params,
16
+ method_name: "<%= method.name %>",
17
+ options: options,
18
+ is_server_streaming: true,
19
+ &block
20
+ )
21
+ ::Gapic::Rest::TransportOperation.new response
22
+ <%- else -%>
23
+ response = @client_stub.make_http_request(
24
+ verb,
25
+ uri: uri,
26
+ body: body || "",
27
+ params: query_string_params,
28
+ method_name: "<%= method.name %>",
29
+ options: options
30
+ )
31
+ operation = ::Gapic::Rest::TransportOperation.new response
32
+ result = <%= method.return_type %>.decode_json response.body, ignore_unknown_fields: true
33
+ catch :response do
34
+ yield result, operation if block_given?
35
+ result
36
+ end
37
+ <%- end -%>