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,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 -%>
@@ -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.rest.service_name_full }
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 -%>
@@ -3,13 +3,13 @@
3
3
  require "helper"
4
4
  require "gapic/rest"
5
5
  require "<%= service.proto_service_require %>"
6
- require "<%= service.service_require %>"
6
+ require "<%= service.rest.service_require %>"
7
7
 
8
8
 
9
- class <%= service.client_name_full %>Test < Minitest::Test
9
+ class <%= service.rest.client_name_full %>Test < Minitest::Test
10
10
  <%= indent render(partial: "service/rest/test/method/setup"), 2 %>
11
11
 
12
- <% service.methods.each do |method| %>
12
+ <% service.rest.methods.each do |method| %>
13
13
  <%= indent render(partial: "service/rest/test/method/#{method.kind}",
14
14
  locals: { method: method }), 2 %>
15
15
 
@@ -0,0 +1,2 @@
1
+ <%- assert_locals method -%>
2
+ assert_equal http_response, response.underlying_op
@@ -4,8 +4,9 @@ def test_configure
4
4
  credentials_token = :dummy_value
5
5
 
6
6
  client = block_config = config = nil
7
- Gapic::Rest::ClientStub.stub :new, nil do
8
- client = <%= full_client_name =%>.new do |config|
7
+ dummy_stub = ClientStub.new nil
8
+ Gapic::Rest::ClientStub.stub :new, dummy_stub do
9
+ client = <%= full_client_name %>.new do |config|
9
10
  config.credentials = credentials_token
10
11
  end
11
12
  end
@@ -0,0 +1,60 @@
1
+ <%- assert_locals method -%>
2
+ <%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.rest.client_name_full -%>
3
+ <%- fields = method.fields_with_first_oneof -%>
4
+ def test_<%= method.name %>
5
+ # Create test objects.
6
+ client_result = <%= method.return_type %>.new
7
+ http_response = OpenStruct.new body: client_result.to_json
8
+
9
+ call_options = {}
10
+
11
+ # Create request parameters for a unary method.
12
+ <%- fields.each do |field| -%>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
+ <%- end -%>
15
+
16
+ <%= method.name %>_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, method_name:|
17
+ assert options.metadata.key? :"x-goog-api-client"
18
+ assert options.metadata[:"x-goog-api-client"].include? "rest"
19
+ refute options.metadata[:"x-goog-api-client"].include? "grpc"
20
+ end
21
+
22
+ <%= method.service.rest.service_name_full %>::<%= method.service.rest.service_stub_name %>.stub :<%= method.rest.transcoding_helper_name %>, ["", "", {}] do
23
+ Gapic::Rest::ClientStub.stub :new, <%= method.name %>_client_stub do
24
+ # Create client
25
+ client = <%= full_client_name %>.new do |config|
26
+ config.credentials = :dummy_value
27
+ end
28
+
29
+ # Use hash object
30
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }) do |_result, response|
31
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
32
+ end
33
+
34
+ <%- if fields.any? -%>
35
+ # Use named arguments
36
+ client.<%= method.name %> <%= fields.map(&:as_kwarg).join ", " %> do |_result, response|
37
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
38
+ end
39
+
40
+ <%- end -%>
41
+ # Use protobuf object
42
+ client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>) do |_result, response|
43
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
44
+ end
45
+
46
+ # Use hash object with options
47
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }, call_options) do |_result, response|
48
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
49
+ end
50
+
51
+ # Use protobuf object with options
52
+ client.<%= method.name %>(<%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>), call_options) do |_result, response|
53
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
54
+ end
55
+
56
+ # Verify method calls
57
+ assert_equal <%= fields.any? ? 5 : 4 %>, <%= method.name %>_client_stub.call_count
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,60 @@
1
+ <%- assert_locals method -%>
2
+ <%- full_client_name = defined?(client_name_full) ? client_name_full : method.service.rest.client_name_full -%>
3
+ <%- fields = method.fields_with_first_oneof -%>
4
+ def test_<%= method.name %>
5
+ # Create test objects.
6
+ client_result = <%= method.return_type %>.new
7
+ http_response = OpenStruct.new body: client_result.to_json
8
+
9
+ call_options = {}
10
+
11
+ # Create request parameters for a unary method.
12
+ <%- fields.each do |field| -%>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
+ <%- end -%>
15
+
16
+ <%= method.name %>_client_stub = ClientStub.new http_response do |_verb, uri:, body:, params:, options:, is_server_streaming:, method_name:|
17
+ assert options.metadata.key? :"x-goog-api-client"
18
+ assert options.metadata[:"x-goog-api-client"].include? "rest"
19
+ refute options.metadata[:"x-goog-api-client"].include? "grpc"
20
+ end
21
+
22
+ <%= method.service.rest.service_name_full %>::<%= method.service.rest.service_stub_name %>.stub :<%= method.rest.transcoding_helper_name %>, ["", "", {}] do
23
+ Gapic::Rest::ClientStub.stub :new, <%= method.name %>_client_stub do
24
+ # Create client
25
+ client = <%= full_client_name %>.new do |config|
26
+ config.credentials = :dummy_value
27
+ end
28
+
29
+ # Use hash object
30
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }) do |_result, response|
31
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
32
+ end.first
33
+
34
+ <%- if fields.any? -%>
35
+ # Use named arguments
36
+ client.<%= method.name %> <%= fields.map(&:as_kwarg).join ", " %> do |_result, response|
37
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
38
+ end.first
39
+
40
+ <%- end -%>
41
+ # Use protobuf object
42
+ client.<%= method.name %> <%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>) do |_result, response|
43
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
44
+ end.first
45
+
46
+ # Use hash object with options
47
+ client.<%= method.name %>({ <%= fields.map(&:as_kwarg).join ", " %> }, call_options) do |_result, response|
48
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
49
+ end.first
50
+
51
+ # Use protobuf object with options
52
+ client.<%= method.name %>(<%= method.request_type %>.new(<%= fields.map(&:as_kwarg).join ", " %>), call_options) do |_result, response|
53
+ <%= indent_tail render(partial: "service/rest/test/method/assert_response", locals: { method: method }), 6 %>
54
+ end.first
55
+
56
+ # Verify method calls
57
+ assert_equal <%= fields.any? ? 5 : 4 %>, <%= method.name %>_client_stub.call_count
58
+ end
59
+ end
60
+ end
@@ -8,24 +8,24 @@ class ClientStub
8
8
  @requests = []
9
9
  end
10
10
 
11
- def make_get_request uri:, params: {}, options: {}
12
- make_http_request :get, uri: uri, body: nil, params: params, options: options
11
+ def make_get_request uri:, params: {}, options: {}, method_name: nil
12
+ make_http_request :get, uri: uri, body: nil, params: params, options: options, method_name: method_name
13
13
  end
14
14
 
15
- def make_delete_request uri:, params: {}, options: {}
16
- make_http_request :delete, uri: uri, body: nil, params: params, options: options
15
+ def make_delete_request uri:, params: {}, options: {}, method_name: nil
16
+ make_http_request :delete, uri: uri, body: nil, params: params, options: options, method_name: method_name
17
17
  end
18
18
 
19
- def make_post_request uri:, body: nil, params: {}, options: {}
20
- make_http_request :post, uri: uri, body: body, params: params, options: options
19
+ def make_post_request uri:, body: nil, params: {}, options: {}, method_name: nil
20
+ make_http_request :post, uri: uri, body: body, params: params, options: options, method_name: method_name
21
21
  end
22
22
 
23
- def make_patch_request uri:, body:, params: {}, options: {}
24
- make_http_request :patch, uri: uri, body: body, params: params, options: options
23
+ def make_patch_request uri:, body:, params: {}, options: {}, method_name: nil
24
+ make_http_request :patch, uri: uri, body: body, params: params, options: options, method_name: method_name
25
25
  end
26
26
 
27
- def make_put_request uri:, body:, params: {}, options: {}
28
- make_http_request :put, uri: uri, body: body, params: params, options: options
27
+ def make_put_request uri:, body:, params: {}, options: {}, method_name: nil
28
+ make_http_request :put, uri: uri, body: body, params: params, options: options, method_name: method_name
29
29
  end
30
30
 
31
31
  def make_http_request *args, **kwargs
@@ -35,4 +35,20 @@ class ClientStub
35
35
 
36
36
  @response
37
37
  end
38
+
39
+ def endpoint
40
+ "endpoint.example.com"
41
+ end
42
+
43
+ def universe_domain
44
+ "example.com"
45
+ end
46
+
47
+ def stub_logger
48
+ nil
49
+ end
50
+
51
+ def logger
52
+ nil
53
+ end
38
54
  end
@@ -3,7 +3,7 @@
3
3
  <%- full_client_name = defined?(client_name_full) ? client_name_full : service.client_name_full -%>
4
4
  def test_<%= resource.path_helper%>
5
5
  grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
6
- ::Gapic::ServiceStub.stub :new, nil do
6
+ ::Gapic::ServiceStub.stub :new, DummyStub.new do
7
7
  client = <%= full_client_name %>.new do |config|
8
8
  config.credentials = grpc_channel
9
9
  end
@@ -15,7 +15,7 @@ class <%= service.client_name_full %>Test < Minitest::Test
15
15
  <%= indent render(partial: "service/test/method/#{method.kind}",
16
16
  locals: { method: method }), 2 %>
17
17
 
18
- <% end %>
18
+ <%- end -%>
19
19
  <%= indent render(partial: "service/test/method/configure", locals: { service: service }), 2 %>
20
20
  <%- if service.lro? -%>
21
21
 
@@ -23,7 +23,8 @@ class <%= service.client_name_full %>Test < Minitest::Test
23
23
  grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
24
24
 
25
25
  client = nil
26
- Gapic::ServiceStub.stub :new, nil do
26
+ dummy_stub = ClientStub.new nil, nil
27
+ Gapic::ServiceStub.stub :new, dummy_stub do
27
28
  client = <%= service.client_name_full =%>.new do |config|
28
29
  config.credentials = grpc_channel
29
30
  end
@@ -0,0 +1,33 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "shared/header" %>
3
+ require "helper"
4
+
5
+ require "gapic/grpc/service_stub"
6
+
7
+ require "<%= service.service_require %>"
8
+
9
+ class <%= service.client_name_full %>PathsTest < Minitest::Test
10
+ class DummyStub
11
+ def endpoint
12
+ "endpoint.example.com"
13
+ end
14
+
15
+ def universe_domain
16
+ "example.com"
17
+ end
18
+
19
+ def stub_logger
20
+ nil
21
+ end
22
+
23
+ def logger
24
+ nil
25
+ end
26
+ end
27
+
28
+ <%- start_line_spacer -%>
29
+ <%- service.deduped_references.each do |resource| -%>
30
+ <%- locals = { resource: resource, service: service } -%>
31
+ <%= line_spacer %><%= indent render(partial: "service/test/resource", locals: locals), 2 %>
32
+ <%- end -%>
33
+ end
@@ -5,6 +5,9 @@ assert_equal grpc_response, response.response
5
5
  <%- elsif method.lro? %>
6
6
  assert_kind_of Gapic::Operation, response
7
7
  assert_equal grpc_response, response.grpc_op
8
+ <%- elsif method.nonstandard_lro? %>
9
+ assert_kind_of Gapic::GenericLRO::Operation, response
10
+ assert_equal grpc_response, response.operation
8
11
  <%- else -%>
9
12
  assert_equal grpc_response, response
10
13
  <%- end -%>
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a bidi streaming method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:|
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a client streaming method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:|
@@ -4,7 +4,8 @@ def test_configure
4
4
  grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
5
5
 
6
6
  client = block_config = config = nil
7
- Gapic::ServiceStub.stub :new, nil do
7
+ dummy_stub = ClientStub.new nil, nil
8
+ Gapic::ServiceStub.stub :new, dummy_stub do
8
9
  client = <%= full_client_name =%>.new do |config|
9
10
  config.credentials = grpc_channel
10
11
  end
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a unary method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:|
@@ -10,7 +10,7 @@ def test_<%= method.name %>
10
10
 
11
11
  # Create request parameters for a server streaming method.
12
12
  <%- fields.each do |field| -%>
13
- <%= field.name %> = <%= field.default_value %>
13
+ <%= field.value_name %> = <%= field.default_value %>
14
14
  <%- end -%>
15
15
 
16
16
  <%= method.name %>_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:|
@@ -14,8 +14,25 @@ class ClientStub
14
14
 
15
15
  @requests << @block&.call(*args, **kwargs)
16
16
 
17
- yield @response, @operation if block_given?
17
+ catch :response do
18
+ yield @response, @operation if block_given?
19
+ @response
20
+ end
21
+ end
22
+
23
+ def endpoint
24
+ "endpoint.example.com"
25
+ end
26
+
27
+ def universe_domain
28
+ "example.com"
29
+ end
30
+
31
+ def stub_logger
32
+ nil
33
+ end
18
34
 
19
- @response
35
+ def logger
36
+ nil
20
37
  end
21
38
  end
@@ -10,8 +10,8 @@ else
10
10
  end
11
11
 
12
12
  group :test do
13
- gem "google-style", "~> 1.25.1"
14
- gem "minitest", "~> 5.14"
13
+ gem "google-style", "~> 1.26.1"
14
+ gem "minitest", "~> 5.16"
15
15
  gem "minitest-focus", "~> 1.1"
16
16
  gem "minitest-hooks", "~> 1.5"
17
17
  end