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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +299 -0
- data/CONTRIBUTING.md +1 -1
- data/README.md +71 -37
- data/bin/protoc-gen-ruby_gapic +2 -2
- data/lib/gapic/file_formatter.rb +23 -19
- data/lib/gapic/formatting_utils.rb +22 -9
- data/lib/gapic/gem_builder.rb +15 -17
- data/lib/gapic/generator/version.rb +1 -1
- data/lib/gapic/generators/base_generator.rb +6 -4
- data/lib/gapic/generators/default_generator.rb +70 -34
- data/lib/gapic/generators/default_generator_parameters.rb +9 -3
- data/lib/gapic/grpc_service_config/parser.rb +2 -2
- data/lib/gapic/model/api_metadata.rb +173 -0
- data/lib/gapic/model/method/http_annotation.rb +158 -60
- data/lib/gapic/model/method/lro.rb +8 -5
- data/lib/gapic/model/method/routing.rb +3 -18
- data/lib/gapic/model/mixins.rb +76 -10
- data/lib/gapic/model/service/nonstandard_lro_provider.rb +10 -11
- data/lib/gapic/package_snippets.rb +159 -0
- data/lib/gapic/path_pattern/parser.rb +11 -2
- data/lib/gapic/path_pattern/pattern.rb +18 -1
- data/lib/gapic/path_pattern/segment.rb +11 -4
- data/lib/gapic/presenters/enum_presenter.rb +14 -0
- data/lib/gapic/presenters/enum_value_presenter.rb +4 -1
- data/lib/gapic/presenters/field_presenter.rb +78 -21
- data/lib/gapic/presenters/gem_presenter.rb +109 -35
- data/lib/gapic/presenters/message_presenter.rb +15 -0
- data/lib/gapic/presenters/method/http_binding_presenter.rb +128 -0
- data/lib/gapic/presenters/method/rest_pagination_info.rb +25 -16
- data/lib/gapic/presenters/method_presenter.rb +109 -35
- data/lib/gapic/presenters/method_rest_presenter.rb +70 -137
- data/lib/gapic/presenters/package_presenter.rb +63 -18
- data/lib/gapic/presenters/resource_presenter.rb +9 -3
- data/lib/gapic/presenters/service/lro_client_presenter.rb +14 -14
- data/lib/gapic/presenters/service/mixin_client_presenter.rb +89 -0
- data/lib/gapic/presenters/service/sub_client_presenter.rb +84 -0
- data/lib/gapic/presenters/service_presenter.rb +183 -31
- data/lib/gapic/presenters/service_rest_presenter.rb +180 -27
- data/lib/gapic/presenters/snippet/client_call_presenter.rb +82 -0
- data/lib/gapic/presenters/snippet/client_initialization_presenter.rb +87 -0
- data/lib/gapic/presenters/snippet/declaration_presenter.rb +91 -0
- data/lib/gapic/presenters/snippet/expression_presenter.rb +135 -0
- data/lib/gapic/presenters/snippet/iteration_presenter.rb +118 -0
- data/lib/gapic/presenters/snippet/parameter_presenter.rb +67 -0
- data/lib/gapic/presenters/snippet/request_initialization_presenters.rb +202 -0
- data/lib/gapic/presenters/snippet/response_handling_presenters.rb +329 -0
- data/lib/gapic/presenters/snippet/statement_presenter.rb +134 -0
- data/lib/gapic/presenters/snippet/type_presenter.rb +98 -0
- data/lib/gapic/presenters/snippet_presenter.rb +199 -10
- data/lib/gapic/presenters.rb +2 -0
- data/lib/gapic/runner.rb +1 -1
- data/lib/gapic/schema/api.rb +49 -3
- data/lib/gapic/schema/loader.rb +67 -22
- data/lib/gapic/schema/parameter_schema.rb +8 -8
- data/lib/gapic/schema/proto_tools.rb +193 -0
- data/lib/gapic/schema/request_param_parser.rb +5 -7
- data/lib/gapic/schema/service_config_parser.rb +38 -4
- data/lib/gapic/schema/wrappers.rb +192 -31
- data/lib/gapic/uri_template/parser.rb +15 -7
- data/lib/google/cloud/tools/snippetgen/configlanguage/v1/snippet_config_language_pb.rb +104 -0
- data/lib/google/cloud/tools/snippetgen/snippetindex/v1/snippet_index_pb.rb +58 -0
- data/lib/google/protobuf/compiler/plugin_pb.rb +47 -0
- data/templates/default/binding_override.text.erb +6 -0
- data/templates/default/gem/gemfile.text.erb +12 -0
- data/templates/default/gem/{gemspec.erb → gemspec.text.erb} +3 -11
- data/templates/default/gem/{readme.erb → readme.text.erb} +10 -6
- data/templates/default/gem/{rubocop.erb → rubocop.text.erb} +3 -0
- data/templates/default/gem/{test_helper.erb → test_helper.text.erb} +4 -2
- data/templates/default/gem/toys.text.erb +12 -0
- data/templates/default/helpers/default_helper.rb +33 -1
- data/templates/default/lib/_binding_override.text.erb +49 -0
- data/templates/default/lib/{_package.erb → _package.text.erb} +6 -9
- data/templates/default/lib/_package_rest.text.erb +24 -0
- data/templates/default/lib/{_service.erb → _service.text.erb} +11 -23
- data/templates/default/lib/package/_self_configure.text.erb +16 -0
- data/templates/default/lib/package/_self_configure_defaults.text.erb +13 -0
- data/templates/default/lib/package/self_configure/_binding_default.text.erb +15 -0
- data/templates/default/lib/rest/_rest.text.erb +46 -0
- data/templates/default/package_rest.text.erb +6 -0
- data/templates/default/proto_docs/_deprecated.text.erb +9 -0
- data/templates/default/proto_docs/{_enum.erb → _enum.text.erb} +1 -0
- data/templates/default/proto_docs/{_message.erb → _message.text.erb} +2 -0
- data/templates/default/service/client/{_client.erb → _client.text.erb} +60 -12
- data/templates/default/service/client/{_config.erb → _config.text.erb} +39 -8
- data/templates/default/service/client/{_operations.erb → _operations.text.erb} +24 -3
- data/templates/default/service/client/method/{_def.erb → _def.text.erb} +2 -2
- data/templates/default/service/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +2 -1
- data/templates/default/service/client/method/def/_request_normal.text.erb +18 -0
- data/templates/default/service/client/method/def/_request_streaming.text.erb +23 -0
- data/templates/default/service/client/method/def/{_response.erb → _response.text.erb} +2 -0
- data/templates/default/service/client/method/def/{_response_nonstandard_lro.erb → _response_nonstandard_lro.text.erb} +1 -1
- data/templates/default/service/client/method/def/_response_normal.text.erb +4 -0
- data/templates/default/service/client/method/def/{_response_normal.erb → _response_normal_lro.text.erb} +1 -3
- data/templates/default/service/client/method/def/{_response_paged.erb → _response_paged.text.erb} +1 -1
- data/templates/default/service/client/method/docs/{_request_normal.erb → _request_normal.text.erb} +1 -1
- data/templates/default/service/client/method/docs/_snippets.text.erb +6 -0
- data/templates/default/service/client/resource/_def.text.erb +7 -0
- data/templates/default/service/nonstandard_lro.text.erb +6 -0
- data/templates/default/service/rest/client/{_client.erb → _client.text.erb} +82 -13
- data/templates/default/service/rest/client/_config.text.erb +178 -0
- data/templates/default/service/rest/client/_operations.text.erb +124 -0
- data/templates/default/service/rest/client/method/{_def.erb → _def.text.erb} +7 -1
- data/templates/default/service/rest/client/method/def/{_options_defaults.erb → _options_defaults.text.erb} +8 -3
- data/templates/default/service/rest/client/method/def/{_response.erb → _response.text.erb} +4 -0
- data/templates/default/service/rest/client/method/def/{_response_nonstandard_lro.erb → _response_nonstandard_lro.text.erb} +5 -4
- data/templates/default/service/rest/client/method/def/_response_normal.text.erb +5 -0
- data/templates/default/service/rest/client/method/def/_response_normal_lro.text.erb +7 -0
- data/templates/default/service/rest/client/method/def/_response_paged.text.erb +7 -0
- data/templates/default/service/rest/client/method/def/_response_server_streaming.text.erb +11 -0
- data/templates/default/service/rest/client/method/docs/{_request.erb → _request.text.erb} +1 -3
- data/templates/default/service/rest/client/method/docs/_result.text.erb +10 -0
- data/templates/default/service/rest/client/method/docs/_snippets.text.erb +6 -0
- data/templates/default/service/{nonstandard_lro.erb → rest/nonstandard_lro.text.erb} +1 -1
- data/templates/default/service/rest/operations.text.erb +6 -0
- data/templates/default/service/rest/service_stub/_service_stub.text.erb +63 -0
- data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.text.erb +37 -0
- data/templates/default/service/rest/service_stub/method/_def.text.erb +35 -0
- data/templates/default/service/rest/service_stub/method/def/_response.text.erb +37 -0
- data/templates/default/service/rest/test/{client.erb → client.text.erb} +3 -3
- data/templates/default/service/rest/test/method/_assert_response.text.erb +2 -0
- data/templates/default/service/rest/test/method/{_configure.erb → _configure.text.erb} +3 -2
- data/templates/default/service/rest/test/method/_normal.text.erb +60 -0
- data/templates/default/service/rest/test/method/_server.text.erb +60 -0
- data/templates/default/service/rest/test/method/{_setup.erb → _setup.text.erb} +26 -10
- data/templates/default/service/test/{_resource.erb → _resource.text.erb} +1 -1
- data/templates/default/service/test/{client.erb → client.text.erb} +3 -2
- data/templates/default/service/test/client_paths.text.erb +33 -0
- data/templates/default/service/test/method/{_bidi.erb → _bidi.text.erb} +1 -1
- data/templates/default/service/test/method/{_client.erb → _client.text.erb} +1 -1
- data/templates/default/service/test/method/{_configure.erb → _configure.text.erb} +2 -1
- data/templates/default/service/test/method/{_normal.erb → _normal.text.erb} +1 -1
- data/templates/default/service/test/method/{_server.erb → _server.text.erb} +1 -1
- data/templates/default/service/test/method/{_setup.erb → _setup.text.erb} +19 -2
- data/templates/default/snippets/{gemfile.erb → gemfile.text.erb} +2 -2
- data/templates/default/snippets/snippet/_body.text.erb +24 -0
- data/templates/default/snippets/snippet/_inline.text.erb +11 -0
- data/templates/default/snippets/snippet/_standalone.text.erb +25 -0
- data/templates/default/snippets/{standalone.erb → standalone.text.erb} +1 -1
- metadata +198 -273
- data/lib/google/api/annotations.pb.rb +0 -39
- data/lib/google/api/auth.pb.rb +0 -75
- data/lib/google/api/backend.pb.rb +0 -59
- data/lib/google/api/billing.pb.rb +0 -53
- data/lib/google/api/client.pb.rb +0 -43
- data/lib/google/api/context.pb.rb +0 -47
- data/lib/google/api/control.pb.rb +0 -38
- data/lib/google/api/documentation.pb.rb +0 -56
- data/lib/google/api/endpoint.pb.rb +0 -42
- data/lib/google/api/field_behavior.pb.rb +0 -51
- data/lib/google/api/http.pb.rb +0 -60
- data/lib/google/api/label.pb.rb +0 -49
- data/lib/google/api/launch_stage.pb.rb +0 -37
- data/lib/google/api/log.pb.rb +0 -47
- data/lib/google/api/logging.pb.rb +0 -48
- data/lib/google/api/metric.pb.rb +0 -90
- data/lib/google/api/monitored_resource.pb.rb +0 -68
- data/lib/google/api/monitoring.pb.rb +0 -48
- data/lib/google/api/quota.pb.rb +0 -63
- data/lib/google/api/resource.pb.rb +0 -80
- data/lib/google/api/routing.pb.rb +0 -58
- data/lib/google/api/service.pb.rb +0 -90
- data/lib/google/api/source_info.pb.rb +0 -44
- data/lib/google/api/system_parameter.pb.rb +0 -51
- data/lib/google/api/usage.pb.rb +0 -47
- data/lib/google/cloud/extended_operations.pb.rb +0 -57
- data/lib/google/longrunning/operations.pb.rb +0 -115
- data/lib/google/protobuf/any.pb.rb +0 -40
- data/lib/google/protobuf/api.pb.rb +0 -69
- data/lib/google/protobuf/compiler/plugin.pb.rb +0 -79
- data/lib/google/protobuf/descriptor.pb.rb +0 -360
- data/lib/google/protobuf/duration.pb.rb +0 -41
- data/lib/google/protobuf/empty.pb.rb +0 -36
- data/lib/google/protobuf/source_context.pb.rb +0 -39
- data/lib/google/protobuf/struct.pb.rb +0 -65
- data/lib/google/protobuf/type.pb.rb +0 -128
- data/lib/google/protobuf/wrappers.pb.rb +0 -80
- data/lib/google/rpc/status.pb.rb +0 -46
- data/templates/default/gem/gemfile.erb +0 -4
- data/templates/default/lib/rest/_rest.erb +0 -9
- data/templates/default/service/client/method/def/_request_normal.erb +0 -4
- data/templates/default/service/client/method/def/_request_streaming.erb +0 -9
- data/templates/default/service/client/method/docs/_deprecated.erb +0 -5
- data/templates/default/service/client/method/docs/_snippets.erb +0 -6
- data/templates/default/service/client/resource/_def.erb +0 -6
- data/templates/default/service/rest/client/_config.erb +0 -122
- data/templates/default/service/rest/client/method/def/_response_normal.erb +0 -6
- data/templates/default/service/rest/client/method/def/_response_paged.erb +0 -7
- data/templates/default/service/rest/client/method/docs/_result.erb +0 -6
- data/templates/default/service/rest/service_stub/_service_stub.erb +0 -25
- data/templates/default/service/rest/service_stub/grpc_transcoding_method/_def.erb +0 -24
- data/templates/default/service/rest/service_stub/method/_def.erb +0 -20
- data/templates/default/service/rest/service_stub/method/def/_response.erb +0 -17
- data/templates/default/service/rest/test/method/_assert_response.erb +0 -2
- data/templates/default/service/rest/test/method/_normal.erb +0 -71
- data/templates/default/service/test/client_paths.erb +0 -15
- data/templates/default/snippets/snippet/_structure.erb +0 -71
- /data/gem_templates/{binary.erb → binary.text.erb} +0 -0
- /data/gem_templates/{dockerfile.erb → dockerfile.text.erb} +0 -0
- /data/gem_templates/{entrypoint.erb → entrypoint.text.erb} +0 -0
- /data/gem_templates/{gapic_sh.erb → gapic_sh.text.erb} +0 -0
- /data/gem_templates/{gemfile.erb → gemfile.text.erb} +0 -0
- /data/gem_templates/{gemspec.erb → gemspec.text.erb} +0 -0
- /data/gem_templates/{generator.erb → generator.text.erb} +0 -0
- /data/gem_templates/{gitignore.erb → gitignore.text.erb} +0 -0
- /data/gem_templates/{rakefile.erb → rakefile.text.erb} +0 -0
- /data/gem_templates/{readme.erb → readme.text.erb} +0 -0
- /data/gem_templates/{rubocop.erb → rubocop.text.erb} +0 -0
- /data/gem_templates/shared/{_header.erb → _header.text.erb} +0 -0
- /data/gem_templates/shared/{_license.erb → _license.text.erb} +0 -0
- /data/gem_templates/shared/{_warning.erb → _warning.text.erb} +0 -0
- /data/gem_templates/{test_generator.erb → test_generator.text.erb} +0 -0
- /data/gem_templates/{test_helper.erb → test_helper.text.erb} +0 -0
- /data/gem_templates/{version.erb → version.text.erb} +0 -0
- /data/templates/default/gem/{_version.erb → _version.text.erb} +0 -0
- /data/templates/default/gem/{changelog.erb → changelog.text.erb} +0 -0
- /data/templates/default/gem/{entrypoint.erb → entrypoint.text.erb} +0 -0
- /data/templates/default/gem/{gapic_metadata_json.erb → gapic_metadata_json.text.erb} +0 -0
- /data/templates/default/gem/{gitignore.erb → gitignore.text.erb} +0 -0
- /data/templates/default/gem/{license.erb → license.text.erb} +0 -0
- /data/templates/default/gem/{rakefile.erb → rakefile.text.erb} +0 -0
- /data/templates/default/gem/{version.erb → version.text.erb} +0 -0
- /data/templates/default/gem/{yardopts.erb → yardopts.text.erb} +0 -0
- /data/templates/default/layouts/{_ruby.erb → _ruby.text.erb} +0 -0
- /data/templates/default/{package.erb → package.text.erb} +0 -0
- /data/templates/default/proto_docs/{_proto_file.erb → _proto_file.text.erb} +0 -0
- /data/templates/default/proto_docs/{proto_file.erb → proto_file.text.erb} +0 -0
- /data/templates/default/proto_docs/{readme.erb → readme.text.erb} +0 -0
- /data/templates/default/service/{_helpers.erb → _helpers.text.erb} +0 -0
- /data/templates/default/service/client/{_credentials.erb → _credentials.text.erb} +0 -0
- /data/templates/default/service/client/{_nonstandard_lro.erb → _nonstandard_lro.text.erb} +0 -0
- /data/templates/default/service/client/{_paths.erb → _paths.text.erb} +0 -0
- /data/templates/default/service/client/{_requires.erb → _requires.text.erb} +0 -0
- /data/templates/default/service/client/{_resource.erb → _resource.text.erb} +0 -0
- /data/templates/default/service/client/{_self_configure.erb → _self_configure.text.erb} +0 -0
- /data/templates/default/service/client/{_self_configure_defaults.erb → _self_configure_defaults.text.erb} +0 -0
- /data/templates/default/service/client/method/def/{_request.erb → _request.text.erb} +0 -0
- /data/templates/default/service/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
- /data/templates/default/service/client/method/def/{_routing_params.erb → _routing_params.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_error.erb → _error.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_request.erb → _request.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_request_field.erb → _request_field.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_request_streaming.erb → _request_streaming.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_response.erb → _response.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_sample.erb → _sample.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_sample_response.erb → _sample_response.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/{_samples.erb → _samples.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/request_field/{_arg.erb → _arg.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/request_field/{_hash.erb → _hash.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_comment.erb → _comment.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_define.erb → _define.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_loop.erb → _loop.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_print.erb → _print.text.erb} +0 -0
- /data/templates/default/service/client/method/docs/sample_response/{_write_file.erb → _write_file.text.erb} +0 -0
- /data/templates/default/service/client/resource/{_doc.erb → _doc.text.erb} +0 -0
- /data/templates/default/service/client/resource/{_multi.erb → _multi.text.erb} +0 -0
- /data/templates/default/service/client/resource/{_single.erb → _single.text.erb} +0 -0
- /data/templates/default/service/{client.erb → client.text.erb} +0 -0
- /data/templates/default/service/{credentials.erb → credentials.text.erb} +0 -0
- /data/templates/default/service/{operations.erb → operations.text.erb} +0 -0
- /data/templates/default/service/{paths.erb → paths.text.erb} +0 -0
- /data/templates/default/service/rest/client/method/def/{_rescue.erb → _rescue.text.erb} +0 -0
- /data/templates/default/service/rest/client/method/docs/{_error.erb → _error.text.erb} +0 -0
- /data/templates/default/service/rest/{client.erb → client.text.erb} +0 -0
- /data/templates/default/service/rest/{grpc_transcoding.erb → grpc_transcoding.text.erb} +0 -0
- /data/templates/default/service/rest/service_stub/grpc_transcoding_method/def/{_query_string_param.erb → _query_string_param.text.erb} +0 -0
- /data/templates/default/service/rest/service_stub/method/def/{_request.erb → _request.text.erb} +0 -0
- /data/templates/default/service/rest/{service_stub.erb → service_stub.text.erb} +0 -0
- /data/templates/default/service/{rest.erb → rest.text.erb} +0 -0
- /data/templates/default/service/test/{client_operations.erb → client_operations.text.erb} +0 -0
- /data/templates/default/service/test/method/{_assert_response.erb → _assert_response.text.erb} +0 -0
- /data/templates/default/service/test/{smoke.erb → smoke.text.erb} +0 -0
- /data/templates/default/{service.erb → service.text.erb} +0 -0
- /data/templates/default/shared/{_header.erb → _header.text.erb} +0 -0
- /data/templates/default/shared/{_license.erb → _license.text.erb} +0 -0
- /data/templates/default/shared/{_warning.erb → _warning.text.erb} +0 -0
@@ -38,22 +38,39 @@ module Gapic
|
|
38
38
|
# @return [Gapic::Model::Method::HttpAnnotation]
|
39
39
|
attr_accessor :http
|
40
40
|
|
41
|
+
# @return [Array<Gapic::Presenters::Method::HttpBindingsPresenter>]
|
42
|
+
attr_accessor :http_bindings
|
43
|
+
|
41
44
|
# @return [Gapic::Model::Method::AipLro, Gapic::Model::Method::NonStandardLro, Gapic::Model::Method::NoLro]
|
42
45
|
attr_accessor :lro
|
43
46
|
|
47
|
+
# @return [String] String representation of this presenter type.
|
48
|
+
attr_reader :type
|
49
|
+
|
44
50
|
##
|
45
51
|
# @param service_presenter [Gapic::Presenters::ServicePresenter]
|
46
52
|
# @param api [Gapic::Schema::Api]
|
47
53
|
# @param method [Gapic::Schema::Method]
|
54
|
+
#
|
48
55
|
def initialize service_presenter, api, method
|
49
56
|
@service_presenter = service_presenter
|
50
57
|
@api = api
|
51
58
|
@method = method
|
52
|
-
@
|
53
|
-
|
54
|
-
|
59
|
+
@type = "method"
|
60
|
+
|
61
|
+
# Service config override should only happen for Operations.
|
62
|
+
# For the main services we expect service config overrides to be rolled into the protos by the publisher.
|
63
|
+
# For all other mixins, since we do not generate them for the service,
|
64
|
+
# the overrides should get configured separately.
|
65
|
+
is_lro = @service_presenter.address.join(".") == Gapic::Model::Mixins::LRO_SERVICE
|
66
|
+
service_config_override_http = is_lro ? @api.service_config : nil
|
67
|
+
@http = Gapic::Model::Method::HttpAnnotation.create_with_override @method, service_config_override_http
|
68
|
+
|
69
|
+
@http_bindings = @http.bindings.map { |binding| Gapic::Presenters::Method::HttpBindingPresenter.new binding }
|
70
|
+
@routing = Gapic::Model::Method::Routing.new @method.routing, @http
|
71
|
+
@lro = Gapic::Model::Method.parse_lro @method, @api
|
55
72
|
|
56
|
-
@rest = MethodRestPresenter.new self, api
|
73
|
+
@rest = MethodRestPresenter.new self, @api
|
57
74
|
end
|
58
75
|
|
59
76
|
##
|
@@ -64,10 +81,21 @@ module Gapic
|
|
64
81
|
end
|
65
82
|
|
66
83
|
##
|
84
|
+
# Return the "primary" snippet for this method. This should be used for
|
85
|
+
# inline snippets.
|
67
86
|
# @return [Gapic::Presenters::SnippetPresenter]
|
68
87
|
#
|
69
|
-
def snippet
|
70
|
-
|
88
|
+
def snippet transport: nil
|
89
|
+
configs = @api.snippet_configs_for @method.full_name
|
90
|
+
SnippetPresenter.new self, @api, config: configs.first, transport: transport
|
91
|
+
end
|
92
|
+
|
93
|
+
##
|
94
|
+
# @return [Array<Gapic::Presenters::SnippetPresenter>]
|
95
|
+
#
|
96
|
+
def all_snippets transport: nil
|
97
|
+
configs = @api.snippet_configs_for(@method.full_name) + [nil]
|
98
|
+
configs.map { |config| SnippetPresenter.new self, @api, config: config, transport: transport }
|
71
99
|
end
|
72
100
|
|
73
101
|
def generate_yardoc_snippets?
|
@@ -82,6 +110,18 @@ module Gapic
|
|
82
110
|
end
|
83
111
|
end
|
84
112
|
|
113
|
+
# Proto name of the method (PascalCase)
|
114
|
+
# @return [String]
|
115
|
+
def grpc_name
|
116
|
+
@method.name
|
117
|
+
end
|
118
|
+
|
119
|
+
# Fully qualified proto name of the method (namespace.PascalCase)
|
120
|
+
# @return [String]
|
121
|
+
def grpc_full_name
|
122
|
+
@method.full_name
|
123
|
+
end
|
124
|
+
|
85
125
|
def kind
|
86
126
|
if client_streaming?
|
87
127
|
if server_streaming?
|
@@ -96,8 +136,15 @@ module Gapic
|
|
96
136
|
end
|
97
137
|
end
|
98
138
|
|
99
|
-
|
100
|
-
|
139
|
+
##
|
140
|
+
# The description as it should appear in YARD docs.
|
141
|
+
#
|
142
|
+
# @param transport [:grpc,:rest] Whether xref links should go to REST or
|
143
|
+
# gRPC client classes. Uses the default transport if not provided.
|
144
|
+
# @return [String]
|
145
|
+
#
|
146
|
+
def doc_description transport: nil
|
147
|
+
@method.docs_leading_comments transport: transport
|
101
148
|
end
|
102
149
|
|
103
150
|
def doc_response_type
|
@@ -114,7 +161,7 @@ module Gapic
|
|
114
161
|
end
|
115
162
|
|
116
163
|
##
|
117
|
-
# @return [Boolean]
|
164
|
+
# @return [Boolean] Whether the method is marked as deprecated.
|
118
165
|
#
|
119
166
|
def is_deprecated?
|
120
167
|
@method.is_deprecated?
|
@@ -125,6 +172,14 @@ module Gapic
|
|
125
172
|
arguments.map { |arg| FieldPresenter.new @api, @method.input, arg }
|
126
173
|
end
|
127
174
|
|
175
|
+
# @return [Array<Gapic::Presenters::FieldPresenter>] List of auto populated fields.
|
176
|
+
def auto_populated_fields
|
177
|
+
field_names_to_filter = @api.api_metadata.auto_populated_fields_by_method_name[name] || []
|
178
|
+
@method.input.fields.filter_map do |field|
|
179
|
+
FieldPresenter.new @api, @method.input, field if field_names_to_filter.include? field.name
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
128
183
|
def fields
|
129
184
|
@method.input.fields.map { |field| FieldPresenter.new @api, @method.input, field }
|
130
185
|
end
|
@@ -168,25 +223,20 @@ module Gapic
|
|
168
223
|
"Access the result along with the RPC operation"
|
169
224
|
end
|
170
225
|
|
226
|
+
# Type for MethodPresenter#yield_params
|
227
|
+
YieldParams = Struct.new :name, :doc_types
|
228
|
+
|
171
229
|
def yield_params
|
172
230
|
if lro?
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
231
|
+
[
|
232
|
+
YieldParams.new("operation", "::Gapic::Operation")
|
233
|
+
]
|
234
|
+
else
|
235
|
+
[
|
236
|
+
YieldParams.new("result", return_type),
|
237
|
+
YieldParams.new("operation", "::GRPC::ActiveCall::Operation")
|
178
238
|
]
|
179
239
|
end
|
180
|
-
[
|
181
|
-
OpenStruct.new(
|
182
|
-
name: "result",
|
183
|
-
doc_types: return_type
|
184
|
-
),
|
185
|
-
OpenStruct.new(
|
186
|
-
name: "operation",
|
187
|
-
doc_types: "::GRPC::ActiveCall::Operation"
|
188
|
-
)
|
189
|
-
]
|
190
240
|
end
|
191
241
|
|
192
242
|
# @api.incode samples and sample_configs are yaml configuration files such as
|
@@ -256,17 +306,28 @@ module Gapic
|
|
256
306
|
return nil unless paged_response? @method.output
|
257
307
|
|
258
308
|
repeated_field = @method.output.fields.find do |f|
|
259
|
-
f.label ==
|
260
|
-
f.type == Google::Protobuf::FieldDescriptorProto::Type::TYPE_MESSAGE
|
309
|
+
f.label == :LABEL_REPEATED && f.type == :TYPE_MESSAGE
|
261
310
|
end
|
262
311
|
message_ruby_type repeated_field.message
|
263
312
|
end
|
264
313
|
|
314
|
+
##
|
315
|
+
# @return [String] The name of the repeated field in paginated responses
|
316
|
+
#
|
317
|
+
def paged_response_repeated_field_name
|
318
|
+
return nil unless paged_response? @method.output
|
319
|
+
|
320
|
+
repeated_field = @method.output.fields.find do |f|
|
321
|
+
f.label == :LABEL_REPEATED && f.type == :TYPE_MESSAGE
|
322
|
+
end
|
323
|
+
repeated_field.name
|
324
|
+
end
|
325
|
+
|
265
326
|
##
|
266
327
|
# @return [Array<String>] The segment key names.
|
267
328
|
#
|
268
329
|
def routing_params
|
269
|
-
|
330
|
+
@http.routing_params
|
270
331
|
end
|
271
332
|
|
272
333
|
##
|
@@ -304,12 +365,25 @@ module Gapic
|
|
304
365
|
{ methods: [name] }
|
305
366
|
end
|
306
367
|
|
368
|
+
##
|
369
|
+
# Whether this method can be generated in REST clients
|
370
|
+
# Only methods with http bindings can be generated, and
|
371
|
+
# additionally only unary methods are currently supported.
|
372
|
+
#
|
373
|
+
# @return [Boolean]
|
374
|
+
#
|
375
|
+
def can_generate_rest?
|
376
|
+
rest.can_generate_rest?
|
377
|
+
end
|
378
|
+
|
307
379
|
protected
|
308
380
|
|
309
381
|
def message_ruby_type message
|
310
382
|
ruby_namespace @api, message.address.join(".")
|
311
383
|
end
|
312
384
|
|
385
|
+
# @private
|
386
|
+
# BUG: This code seems to be dead
|
313
387
|
def doc_types_for arg
|
314
388
|
if arg.message?
|
315
389
|
"#{message_ruby_type arg.message}, Hash"
|
@@ -328,12 +402,16 @@ module Gapic
|
|
328
402
|
end
|
329
403
|
end
|
330
404
|
|
405
|
+
# @private
|
406
|
+
# BUG: This code seems to be dead
|
331
407
|
def doc_desc_for arg
|
332
408
|
return nil if arg.docs.leading_comments.empty?
|
333
409
|
|
334
410
|
arg.docs.leading_comments
|
335
411
|
end
|
336
412
|
|
413
|
+
# @private
|
414
|
+
# BUG: This code seems to be dead
|
337
415
|
def default_value_for arg
|
338
416
|
if arg.message?
|
339
417
|
"{}"
|
@@ -355,14 +433,11 @@ module Gapic
|
|
355
433
|
|
356
434
|
def paged_request? request
|
357
435
|
page_token = request.fields.find do |f|
|
358
|
-
f.name == "page_token" && f.type ==
|
436
|
+
f.name == "page_token" && f.type == :TYPE_STRING
|
359
437
|
end
|
360
438
|
return false if page_token.nil?
|
361
439
|
|
362
|
-
page_size_types = [
|
363
|
-
Google::Protobuf::FieldDescriptorProto::Type::TYPE_INT32,
|
364
|
-
Google::Protobuf::FieldDescriptorProto::Type::TYPE_INT64
|
365
|
-
]
|
440
|
+
page_size_types = [:TYPE_INT32, :TYPE_INT64]
|
366
441
|
page_size = request.fields.find do |f|
|
367
442
|
f.name == "page_size" && page_size_types.include?(f.type)
|
368
443
|
end
|
@@ -373,13 +448,12 @@ module Gapic
|
|
373
448
|
|
374
449
|
def paged_response? response
|
375
450
|
next_page_token = response.fields.find do |f|
|
376
|
-
f.name == "next_page_token" && f.type ==
|
451
|
+
f.name == "next_page_token" && f.type == :TYPE_STRING
|
377
452
|
end
|
378
453
|
return false if next_page_token.nil?
|
379
454
|
|
380
455
|
repeated_field = response.fields.find do |f|
|
381
|
-
f.label ==
|
382
|
-
f.type == Google::Protobuf::FieldDescriptorProto::Type::TYPE_MESSAGE
|
456
|
+
f.label == :LABEL_REPEATED && f.type == :TYPE_MESSAGE
|
383
457
|
end
|
384
458
|
return false if repeated_field.nil?
|
385
459
|
|
@@ -23,147 +23,32 @@ module Gapic
|
|
23
23
|
#
|
24
24
|
class MethodRestPresenter
|
25
25
|
# @return [Gapic::Presenters::Method::RestPaginationInfo]
|
26
|
-
attr_reader :
|
26
|
+
attr_reader :compute_pagination
|
27
|
+
|
28
|
+
attr_reader :http_bindings
|
29
|
+
|
30
|
+
# @return [String] String representation of this presenter type.
|
31
|
+
attr_reader :type
|
27
32
|
|
28
33
|
##
|
29
34
|
# @param main_method [Gapic::Presenters::MethodPresenter] the main presenter for this method.
|
30
35
|
# @param api [Gapic::Schema::Api]
|
31
36
|
#
|
32
37
|
def initialize main_method, api
|
33
|
-
@api = api
|
34
38
|
@main_method = main_method
|
35
|
-
@
|
36
|
-
@
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
##
|
42
|
-
# @return [Boolean] Whether a http verb is present for this method
|
43
|
-
#
|
44
|
-
def verb?
|
45
|
-
@http.verb?
|
46
|
-
end
|
47
|
-
|
48
|
-
##
|
49
|
-
# @return [Symbol] a http verb for this method
|
50
|
-
#
|
51
|
-
def verb
|
52
|
-
@http.verb
|
53
|
-
end
|
54
|
-
|
55
|
-
##
|
56
|
-
# @return [Boolean] Whether a method path is present and non-empty
|
57
|
-
#
|
58
|
-
def path?
|
59
|
-
@http.path?
|
60
|
-
end
|
61
|
-
|
62
|
-
##
|
63
|
-
# @return [Boolean] Whether any routing params are present
|
64
|
-
#
|
65
|
-
def routing_params?
|
66
|
-
@http.routing_params?
|
67
|
-
end
|
68
|
-
|
69
|
-
##
|
70
|
-
# @return [Array<String>] The segment key names.
|
71
|
-
#
|
72
|
-
def routing_params
|
73
|
-
@http.routing_params
|
74
|
-
end
|
75
|
-
|
76
|
-
##
|
77
|
-
# @return [Boolean] Whether method has body specified in proto
|
78
|
-
#
|
79
|
-
def body?
|
80
|
-
@http.body?
|
81
|
-
end
|
82
|
-
|
83
|
-
##
|
84
|
-
# Performs a limited version of grpc transcoding to create a string that will interpolate
|
85
|
-
# the values from the request object to create a request URI at runtime.
|
86
|
-
# Currently only supports "value" into "request_object.value"
|
87
|
-
# @param [String] request_obj_name the name of the request object for the interpolation
|
88
|
-
# defaults to "request_pb"
|
89
|
-
# @return [String] A string to interpolate values from the request object into URI
|
90
|
-
#
|
91
|
-
def uri_interpolated request_obj_name = "request_pb"
|
92
|
-
return path unless routing_params?
|
93
|
-
|
94
|
-
routing_params.reduce path do |uri, param|
|
95
|
-
param_esc = Regexp.escape param
|
96
|
-
uri.gsub(/{#{param_esc}[^}]*}/, "\#{#{request_obj_name}.#{param}}")
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
##
|
101
|
-
# Name of the variable to use for storing the body result of the transcoding call
|
102
|
-
# Normally "body" but use "_body" for discarding the result for
|
103
|
-
# the calls that do not send body
|
104
|
-
# @return [String]
|
105
|
-
def body_var_name
|
106
|
-
body? ? "body" : "_body"
|
107
|
-
end
|
108
|
-
|
109
|
-
##
|
110
|
-
# @return [Boolean] True if body contains full request object (`*` in the annotation), false otherwise
|
111
|
-
#
|
112
|
-
def body_is_request_object?
|
113
|
-
body == "*"
|
114
|
-
end
|
115
|
-
|
116
|
-
##
|
117
|
-
# Performs a limited version of grpc transcoding to create a string that will interpolate
|
118
|
-
# the values from the request object to create a request body at runtime.
|
119
|
-
# Currently only supports either "*" for "the whole request object" or
|
120
|
-
# "value" for "request_object.value"
|
121
|
-
#
|
122
|
-
# @param [String] request_obj_name the name of the request object for the interpolation
|
123
|
-
# defaults to "request_pb"
|
124
|
-
#
|
125
|
-
# @return [String] A string to interpolate values from the request object into body
|
126
|
-
#
|
127
|
-
def body_interpolated request_obj_name = "request_pb"
|
128
|
-
return "\"\"" unless body?
|
129
|
-
|
130
|
-
return "#{request_obj_name}.to_json" if body_is_request_object?
|
131
|
-
|
132
|
-
"#{request_obj_name}.#{body}.to_json"
|
133
|
-
end
|
134
|
-
|
135
|
-
##
|
136
|
-
# @return [Boolean] whether any query string parameters are present
|
137
|
-
#
|
138
|
-
def query_string_params?
|
139
|
-
query_string_params.any?
|
140
|
-
end
|
141
|
-
|
142
|
-
# @return [Array<String>]
|
143
|
-
def query_string_params
|
144
|
-
return [] if body_is_request_object?
|
145
|
-
|
146
|
-
routing_params_set = routing_params.to_set
|
147
|
-
@main_method.arguments
|
148
|
-
.reject { |arg| routing_params_set.include? arg.name }
|
149
|
-
.reject { |arg| body == arg.name }
|
150
|
-
.reject(&:message?)
|
151
|
-
.reject { |arg| arg.default_value_for_type.nil? }
|
152
|
-
end
|
153
|
-
|
154
|
-
##
|
155
|
-
# Name of the variable to use for storing the query_string_params result of the transcoding call
|
156
|
-
# Normally "query_string_params" but use "_query_string_params" for discarding the result for
|
157
|
-
# the calls that do not sent query_string_params
|
158
|
-
# @return [String]
|
159
|
-
def query_string_params_var_name
|
160
|
-
query_string_params? ? "query_string_params" : "_query_string_params"
|
39
|
+
@http_bindings = main_method.http_bindings
|
40
|
+
@compute_pagination =
|
41
|
+
if @main_method.service.special_compute_behavior?
|
42
|
+
Gapic::Presenters::Method::RestPaginationInfo.new main_method.method, api
|
43
|
+
end
|
44
|
+
@type = "method"
|
161
45
|
end
|
162
46
|
|
163
47
|
##
|
164
48
|
# Name for the GRPC transcoding helper method
|
165
49
|
#
|
166
50
|
# @return [String]
|
51
|
+
#
|
167
52
|
def transcoding_helper_name
|
168
53
|
"transcode_#{name}_request"
|
169
54
|
end
|
@@ -177,6 +62,12 @@ module Gapic
|
|
177
62
|
@main_method.name
|
178
63
|
end
|
179
64
|
|
65
|
+
# Fully qualified proto name of the method (namespace.PascalCase)
|
66
|
+
# @return [String]
|
67
|
+
def grpc_full_name
|
68
|
+
@main_method.grpc.full_name
|
69
|
+
end
|
70
|
+
|
180
71
|
##
|
181
72
|
# Full class name of the request type
|
182
73
|
#
|
@@ -202,18 +93,37 @@ module Gapic
|
|
202
93
|
# @return [String]
|
203
94
|
#
|
204
95
|
def doc_response_type
|
205
|
-
return "::Gapic::
|
96
|
+
return "::Gapic::Operation" if lro?
|
97
|
+
if paged?
|
98
|
+
elem_type = compute_pagination&.paged_element_doc_type || @main_method.paged_response_type
|
99
|
+
return "::Gapic::Rest::PagedEnumerable<#{elem_type}>"
|
100
|
+
end
|
206
101
|
return "::Gapic::GenericLRO::Operation" if nonstandard_lro?
|
207
102
|
return_type
|
208
103
|
end
|
209
104
|
|
105
|
+
##
|
106
|
+
# @return [String] The name of the repeated field in paginated responses
|
107
|
+
#
|
108
|
+
def paged_response_repeated_field_name
|
109
|
+
if compute_pagination
|
110
|
+
compute_pagination.response_repeated_field_name
|
111
|
+
else
|
112
|
+
@main_method.paged_response_repeated_field_name
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
210
116
|
##
|
211
117
|
# Whether the REGAPIC method should be rendered as paged
|
212
118
|
#
|
213
119
|
# @return [Boolean]
|
214
120
|
#
|
215
121
|
def paged?
|
216
|
-
@
|
122
|
+
compute_pagination ? compute_pagination.paged? : @main_method.paged?
|
123
|
+
end
|
124
|
+
|
125
|
+
def lro?
|
126
|
+
@main_method.lro?
|
217
127
|
end
|
218
128
|
|
219
129
|
##
|
@@ -225,20 +135,43 @@ module Gapic
|
|
225
135
|
@main_method.nonstandard_lro?
|
226
136
|
end
|
227
137
|
|
228
|
-
|
138
|
+
##
|
139
|
+
# The presenter for the nonstandard LRO client of the kind this method uses
|
140
|
+
#
|
141
|
+
# @return [Gapic::Presenters::Service::LroClientPresenter, nil]
|
142
|
+
#
|
143
|
+
def nonstandard_lro_client
|
144
|
+
return unless nonstandard_lro?
|
145
|
+
@main_method.service.rest.nonstandard_lros.find { |model| model.service == @main_method.lro.service_full_name }
|
146
|
+
end
|
147
|
+
|
148
|
+
##
|
149
|
+
# Whether this method can be generated in REST clients
|
150
|
+
# Only methods with http bindings can be generated, and
|
151
|
+
# additionally only unary methods are currently supported.
|
152
|
+
#
|
153
|
+
# @return [Boolean]
|
154
|
+
#
|
155
|
+
def can_generate_rest?
|
156
|
+
[:normal, :server].include?(@main_method.kind) &&
|
157
|
+
http_bindings.first&.verb? &&
|
158
|
+
http_bindings.first&.path?
|
159
|
+
end
|
229
160
|
|
230
161
|
##
|
231
|
-
#
|
162
|
+
# Whether this method is a server-streaming method
|
163
|
+
#
|
164
|
+
# @return [Boolean]
|
232
165
|
#
|
233
|
-
def
|
234
|
-
@
|
166
|
+
def server_streaming?
|
167
|
+
@main_method.server_streaming?
|
235
168
|
end
|
236
169
|
|
237
170
|
##
|
238
|
-
# @return [
|
171
|
+
# @return [Boolean] Whether the method is marked as deprecated.
|
239
172
|
#
|
240
|
-
def
|
241
|
-
@
|
173
|
+
def is_deprecated?
|
174
|
+
@main_method.is_deprecated?
|
242
175
|
end
|
243
176
|
end
|
244
177
|
end
|
@@ -61,16 +61,68 @@ module Gapic
|
|
61
61
|
def services
|
62
62
|
@services ||= begin
|
63
63
|
files = @api.generate_files.select { |f| f.package == @package }
|
64
|
-
|
64
|
+
service_list = files.map(&:services).flatten
|
65
|
+
mixin_service_names = gem.mixins_model.mixin_services
|
66
|
+
service_list.delete_if { |s| mixin_service_names.include? s.full_name }
|
65
67
|
# Omit common services in this package. Common service clients do not
|
66
68
|
# go into their own package.
|
67
|
-
normal_services =
|
69
|
+
normal_services = service_list.select { |s| @api.delegate_service_for(s).nil? }
|
68
70
|
# But include common services that delegate to normal services in this package.
|
69
71
|
common_services = normal_services.flat_map { |s| @api.common_services_for s }
|
70
72
|
(normal_services + common_services).map { |s| ServicePresenter.new @gem_presenter, @api, s }
|
71
73
|
end
|
72
74
|
end
|
73
75
|
|
76
|
+
##
|
77
|
+
# @return [Boolean] Whether the generation of REST clients is requested
|
78
|
+
# and can be done because at least one method has rest bindings.
|
79
|
+
#
|
80
|
+
def generate_rest_clients?
|
81
|
+
@api.generate_rest_clients? && !first_service_with_rest.nil?
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# @return [Boolean] Whether the generation of gRPC clients is requested
|
86
|
+
#
|
87
|
+
def generate_grpc_clients?
|
88
|
+
@api.generate_grpc_clients?
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# First service with REST bindings.
|
93
|
+
# @return [Gapic::Presenters::ServicePresenter, nil]
|
94
|
+
#
|
95
|
+
def first_service_with_rest
|
96
|
+
services.find(&:methods_rest_bindings?)
|
97
|
+
end
|
98
|
+
|
99
|
+
##
|
100
|
+
# Whether there are mixin services that this package has http binding overrides for.
|
101
|
+
#
|
102
|
+
# @return [Boolean]
|
103
|
+
#
|
104
|
+
def mixin_binding_overrides?
|
105
|
+
first_service_with_rest&.rest&.mixin_binding_overrides? || false
|
106
|
+
end
|
107
|
+
|
108
|
+
##
|
109
|
+
# Requires path for the mixin binding overrides file
|
110
|
+
#
|
111
|
+
# @return [String]
|
112
|
+
#
|
113
|
+
def mixin_binding_overrides_require
|
114
|
+
"#{ruby_file_path @api, namespace}/bindings_override"
|
115
|
+
end
|
116
|
+
|
117
|
+
##
|
118
|
+
# File path for the mixin binding overrides file
|
119
|
+
#
|
120
|
+
# @return [String]
|
121
|
+
#
|
122
|
+
def mixin_binding_overrides_file_path
|
123
|
+
"#{mixin_binding_overrides_require}.rb"
|
124
|
+
end
|
125
|
+
|
74
126
|
def address
|
75
127
|
@package.split "."
|
76
128
|
end
|
@@ -79,10 +131,18 @@ module Gapic
|
|
79
131
|
ruby_file_path @api, namespace
|
80
132
|
end
|
81
133
|
|
134
|
+
def package_rest_require
|
135
|
+
"#{ruby_file_path @api, namespace}/rest"
|
136
|
+
end
|
137
|
+
|
82
138
|
def package_file_path
|
83
139
|
"#{package_require}.rb"
|
84
140
|
end
|
85
141
|
|
142
|
+
def package_rest_file_path
|
143
|
+
"#{package_rest_require}.rb"
|
144
|
+
end
|
145
|
+
|
86
146
|
def package_directory_name
|
87
147
|
package_require.split("/").last
|
88
148
|
end
|
@@ -117,24 +177,9 @@ module Gapic
|
|
117
177
|
language: "ruby",
|
118
178
|
protoPackage: name,
|
119
179
|
libraryPackage: namespace,
|
120
|
-
services: services.
|
180
|
+
services: services.to_h { |s| [s.grpc_service_name, s.drift_manifest] }
|
121
181
|
}
|
122
182
|
end
|
123
|
-
|
124
|
-
##
|
125
|
-
# How comments in the generated libraries refer to the GRPC client
|
126
|
-
# if no REST code is generated, this should just be "client",
|
127
|
-
# if REST code is generated, this should be disambiguated into the "GRPC client"
|
128
|
-
#
|
129
|
-
# Since we are using first service for an indication of whether package generates
|
130
|
-
# REST code, it's OK to defer this to the first service as well.
|
131
|
-
# For packages with no services the value of this does not really matter as
|
132
|
-
# no client generation docs will be generated.
|
133
|
-
#
|
134
|
-
# @return [String]
|
135
|
-
def grpc_client_designation
|
136
|
-
services.first&.grpc_client_designation || ""
|
137
|
-
end
|
138
183
|
end
|
139
184
|
end
|
140
185
|
end
|
@@ -15,7 +15,6 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
require "gapic/path_pattern"
|
18
|
-
require "active_support/inflector"
|
19
18
|
|
20
19
|
module Gapic
|
21
20
|
module Presenters
|
@@ -58,12 +57,10 @@ module Gapic
|
|
58
57
|
#
|
59
58
|
class PatternPresenter
|
60
59
|
def initialize pattern_string
|
61
|
-
@pattern = pattern_string
|
62
60
|
@parsed_pattern = Gapic::PathPattern.parse pattern_string
|
63
61
|
@path_string = build_path_string
|
64
62
|
end
|
65
63
|
|
66
|
-
attr_reader :pattern
|
67
64
|
attr_reader :path_string
|
68
65
|
|
69
66
|
def pattern_template
|
@@ -78,6 +75,11 @@ module Gapic
|
|
78
75
|
@parsed_pattern.arguments
|
79
76
|
end
|
80
77
|
|
78
|
+
# @return [String] The conflicting argument name escaped with local binding.
|
79
|
+
def escape_argument arg
|
80
|
+
Gapic::RubyInfo.keywords.include?(arg) ? "binding.local_variable_get(:#{arg})" : arg
|
81
|
+
end
|
82
|
+
|
81
83
|
def formal_arguments
|
82
84
|
@parsed_pattern.arguments.map { |name| "#{name}:" }.join ", "
|
83
85
|
end
|
@@ -103,6 +105,10 @@ module Gapic
|
|
103
105
|
end.join "/"
|
104
106
|
end
|
105
107
|
|
108
|
+
def pattern
|
109
|
+
@parsed_pattern.path_pattern
|
110
|
+
end
|
111
|
+
|
106
112
|
private
|
107
113
|
|
108
114
|
def build_path_string
|