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
@@ -25,16 +25,33 @@ module Gapic
|
|
25
25
|
class FieldPresenter
|
26
26
|
include Gapic::Helpers::NamespaceHelper
|
27
27
|
|
28
|
+
# @return [String] String representation of this presenter type.
|
29
|
+
attr_reader :type
|
30
|
+
|
31
|
+
##
|
32
|
+
# @param api [Gapic::Schema::Api]
|
33
|
+
# @param message [Gapic::Schema::Message]
|
34
|
+
# @param field [Gapic::Schema::Field]
|
35
|
+
#
|
28
36
|
def initialize api, message, field
|
29
37
|
@api = api
|
30
38
|
@message = message
|
31
39
|
@field = field
|
40
|
+
@type = "field"
|
32
41
|
end
|
33
42
|
|
34
43
|
def name
|
35
44
|
@field.name
|
36
45
|
end
|
37
46
|
|
47
|
+
##
|
48
|
+
# @return [String] The field name to be used as a value without reserved keywords.
|
49
|
+
#
|
50
|
+
def value_name
|
51
|
+
name = @field.name
|
52
|
+
Gapic::RubyInfo.keywords.include?(name) ? "#{name}_param" : name
|
53
|
+
end
|
54
|
+
|
38
55
|
def doc_types
|
39
56
|
field_doc_types @field, false
|
40
57
|
end
|
@@ -48,8 +65,15 @@ module Gapic
|
|
48
65
|
field_doc_types @field, true
|
49
66
|
end
|
50
67
|
|
51
|
-
|
52
|
-
|
68
|
+
##
|
69
|
+
# The description as it should appear in YARD docs.
|
70
|
+
#
|
71
|
+
# @param transport [:grpc,:rest] Whether xref links should go to REST or
|
72
|
+
# gRPC client classes. Uses the default transport if not provided.
|
73
|
+
# @return [String]
|
74
|
+
#
|
75
|
+
def doc_description transport: nil
|
76
|
+
@field.docs_leading_comments transport: transport
|
53
77
|
end
|
54
78
|
|
55
79
|
def default_value
|
@@ -59,7 +83,7 @@ module Gapic
|
|
59
83
|
end
|
60
84
|
|
61
85
|
def as_kwarg value: nil
|
62
|
-
"#{name}: #{value ||
|
86
|
+
"#{name}: #{value || value_name}"
|
63
87
|
end
|
64
88
|
|
65
89
|
# TODO: remove, only used in tests
|
@@ -126,14 +150,60 @@ module Gapic
|
|
126
150
|
end
|
127
151
|
|
128
152
|
##
|
129
|
-
# Name of this field, camel-cased
|
153
|
+
# Name of this field, camel-cased.
|
130
154
|
# @return [String]
|
155
|
+
#
|
131
156
|
def camel_name
|
132
157
|
camel_name_for name
|
133
158
|
end
|
134
159
|
|
160
|
+
##
|
161
|
+
# @return [Boolean] Whether the field is marked as deprecated.
|
162
|
+
#
|
163
|
+
def is_deprecated?
|
164
|
+
@field.is_deprecated?
|
165
|
+
end
|
166
|
+
|
135
167
|
protected
|
136
168
|
|
169
|
+
# @private
|
170
|
+
FIELD_TYPE_MAPPING = {
|
171
|
+
TYPE_DOUBLE: "::Float",
|
172
|
+
TYPE_FLOAT: "::Float",
|
173
|
+
TYPE_INT64: "::Integer",
|
174
|
+
TYPE_UINT64: "::Integer",
|
175
|
+
TYPE_INT32: "::Integer",
|
176
|
+
TYPE_FIXED64: "::Integer",
|
177
|
+
TYPE_FIXED32: "::Integer",
|
178
|
+
TYPE_BOOL: "::Boolean",
|
179
|
+
TYPE_STRING: "::String",
|
180
|
+
TYPE_BYTES: "::String",
|
181
|
+
TYPE_UINT32: "::Integer",
|
182
|
+
TYPE_SFIXED32: "::Integer",
|
183
|
+
TYPE_SFIXED64: "::Integer",
|
184
|
+
TYPE_SINT32: "::Integer",
|
185
|
+
TYPE_SINT64: "::Integer"
|
186
|
+
}.freeze
|
187
|
+
|
188
|
+
# @private
|
189
|
+
FIELD_VALUE_MAPPING = {
|
190
|
+
TYPE_DOUBLE: "3.5",
|
191
|
+
TYPE_FLOAT: "3.5",
|
192
|
+
TYPE_INT64: "42",
|
193
|
+
TYPE_UINT64: "42",
|
194
|
+
TYPE_INT32: "42",
|
195
|
+
TYPE_FIXED64: "42",
|
196
|
+
TYPE_FIXED32: "42",
|
197
|
+
TYPE_BOOL: "true",
|
198
|
+
TYPE_STRING: "\"hello world\"",
|
199
|
+
TYPE_BYTES: "\"hello world\"",
|
200
|
+
TYPE_UINT32: "42",
|
201
|
+
TYPE_SFIXED32: "42",
|
202
|
+
TYPE_SFIXED64: "42",
|
203
|
+
TYPE_SINT32: "42",
|
204
|
+
TYPE_SINT64: "42"
|
205
|
+
}.freeze
|
206
|
+
|
137
207
|
def field_doc_types field, output
|
138
208
|
return field_map_type field.message, output if field.map?
|
139
209
|
base_type =
|
@@ -144,14 +214,7 @@ module Gapic
|
|
144
214
|
# TODO: handle when arg message is nil and enum is the type
|
145
215
|
message_ruby_type field.enum
|
146
216
|
else
|
147
|
-
|
148
|
-
when 1, 2 then "::Float"
|
149
|
-
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "::Integer"
|
150
|
-
when 9, 12 then "::String"
|
151
|
-
when 8 then "::Boolean"
|
152
|
-
else
|
153
|
-
"::Object"
|
154
|
-
end
|
217
|
+
FIELD_TYPE_MAPPING[field.type] || "::Object"
|
155
218
|
end
|
156
219
|
field.repeated? ? "::Array<#{base_type}>" : base_type
|
157
220
|
end
|
@@ -179,14 +242,8 @@ module Gapic
|
|
179
242
|
# TODO: select the first non-0 enum value
|
180
243
|
":#{@field.enum.values.first.name}"
|
181
244
|
else
|
182
|
-
|
183
|
-
|
184
|
-
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "42"
|
185
|
-
when 9, 12 then "\"hello world\""
|
186
|
-
when 8 then "true"
|
187
|
-
else
|
188
|
-
"::Object"
|
189
|
-
end
|
245
|
+
# BUG: This should default to a better value
|
246
|
+
FIELD_VALUE_MAPPING[@field.type] || "::Object"
|
190
247
|
end
|
191
248
|
end
|
192
249
|
|
@@ -201,7 +258,7 @@ module Gapic
|
|
201
258
|
def camel_name_for attr_name
|
202
259
|
parts = attr_name.split "_"
|
203
260
|
first_part = parts[0]
|
204
|
-
other_parts = parts[1
|
261
|
+
other_parts = parts[1..]
|
205
262
|
other_parts_pascal = other_parts.map(&:capitalize).join
|
206
263
|
"#{first_part}#{other_parts_pascal}"
|
207
264
|
end
|
@@ -30,7 +30,8 @@ module Gapic
|
|
30
30
|
|
31
31
|
def initialize api
|
32
32
|
@api = api
|
33
|
-
|
33
|
+
service_config = api.configuration[:common_services] ? nil : api.service_config
|
34
|
+
@mixins_model = Gapic::Model::Mixins.new api.services.map(&:full_name), service_config, name
|
34
35
|
end
|
35
36
|
|
36
37
|
##
|
@@ -53,7 +54,10 @@ module Gapic
|
|
53
54
|
def services
|
54
55
|
@services ||= begin
|
55
56
|
files = @api.generate_files
|
56
|
-
files.map(&:services).flatten
|
57
|
+
service_list = files.map(&:services).flatten
|
58
|
+
mixin_service_names = mixins_model.mixin_services
|
59
|
+
service_list.delete_if { |s| mixin_service_names.include? s.full_name }
|
60
|
+
service_list.map { |s| ServicePresenter.new self, @api, s }
|
57
61
|
end
|
58
62
|
end
|
59
63
|
|
@@ -63,17 +67,12 @@ module Gapic
|
|
63
67
|
|
64
68
|
def proto_files
|
65
69
|
@proto_files ||= begin
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
files.map { |f| FilePresenter.new @api, f }
|
70
|
+
@api.files
|
71
|
+
.select { |f| useful_proto_file? f }
|
72
|
+
.map { |f| FilePresenter.new @api, f }
|
70
73
|
end
|
71
74
|
end
|
72
75
|
|
73
|
-
def address
|
74
|
-
name.split("-").map(&:camelize)
|
75
|
-
end
|
76
|
-
|
77
76
|
def name
|
78
77
|
gem_config :name
|
79
78
|
end
|
@@ -85,6 +84,7 @@ module Gapic
|
|
85
84
|
|
86
85
|
def title
|
87
86
|
gem_config(:title) ||
|
87
|
+
@api.api_metadata.title ||
|
88
88
|
namespace.split("::").join(" ")
|
89
89
|
end
|
90
90
|
|
@@ -117,11 +117,29 @@ module Gapic
|
|
117
117
|
|
118
118
|
def description
|
119
119
|
gem_config(:description) ||
|
120
|
+
@api.api_metadata.description ||
|
120
121
|
"#{name} is the official client library for the #{title} API."
|
121
122
|
end
|
122
123
|
|
124
|
+
def gemspec_description
|
125
|
+
description.gsub(/\s+/, " ").strip
|
126
|
+
end
|
127
|
+
|
128
|
+
##
|
129
|
+
# Generates a description text for README files, accounting for markdown
|
130
|
+
# rendering and properly escaping variables.
|
131
|
+
#
|
132
|
+
# @return [Array<String>] The description text as an array of lines.
|
133
|
+
#
|
134
|
+
def readme_description
|
135
|
+
has_markdown = description.strip.start_with? "#"
|
136
|
+
desc = has_markdown ? description.split("\n") : [description.gsub(/\s+/, " ").strip]
|
137
|
+
Gapic::FormattingUtils.format_doc_lines @api, desc
|
138
|
+
end
|
139
|
+
|
123
140
|
def summary
|
124
141
|
gem_config(:summary) ||
|
142
|
+
@api.api_metadata.summary ||
|
125
143
|
"API Client library for the #{title} API"
|
126
144
|
end
|
127
145
|
|
@@ -143,17 +161,21 @@ module Gapic
|
|
143
161
|
end
|
144
162
|
|
145
163
|
def product_documentation_url
|
146
|
-
gem_config
|
164
|
+
gem_config(:product_documentation_url) || @api.api_metadata.documentation_url
|
147
165
|
end
|
148
166
|
|
149
167
|
def api_id
|
150
|
-
raw_id = gem_config
|
168
|
+
raw_id = gem_config(:api_id) || @api.api_metadata.name
|
151
169
|
return nil unless raw_id
|
152
170
|
raw_id.include?(".") ? raw_id : "#{raw_id}.googleapis.com"
|
153
171
|
end
|
154
172
|
|
155
173
|
def api_shortname
|
156
|
-
gem_config
|
174
|
+
gem_config(:api_shortname) || @api.api_metadata.short_name
|
175
|
+
end
|
176
|
+
|
177
|
+
def doc_tag_prefix
|
178
|
+
@api.api_metadata.doc_tag_prefix || api_shortname || api_id&.split(".")&.first
|
157
179
|
end
|
158
180
|
|
159
181
|
def issue_tracker_url
|
@@ -185,8 +207,38 @@ module Gapic
|
|
185
207
|
##
|
186
208
|
# @return [Boolean]
|
187
209
|
#
|
210
|
+
def rest_numeric_enums?
|
211
|
+
gem_config(:rest_numeric_enums) || false
|
212
|
+
end
|
213
|
+
|
214
|
+
##
|
215
|
+
# @return [Boolean] Whether the generation of REST clients is requested
|
216
|
+
# and can be done because at least one method has rest bindings.
|
217
|
+
#
|
188
218
|
def generate_rest_clients?
|
189
|
-
@api.generate_rest_clients?
|
219
|
+
@api.generate_rest_clients? && packages.any? { |package| !package.first_service_with_rest.nil? }
|
220
|
+
end
|
221
|
+
|
222
|
+
##
|
223
|
+
# @return [Boolean] Whether generation of gRPC clients is requested.
|
224
|
+
#
|
225
|
+
def generate_grpc_clients?
|
226
|
+
@api.generate_grpc_clients?
|
227
|
+
end
|
228
|
+
|
229
|
+
##
|
230
|
+
# @return [:grpc] If gRPC is the default transport
|
231
|
+
# @return [:rest] if REST is the default transport
|
232
|
+
#
|
233
|
+
def default_transport
|
234
|
+
@api.default_transport
|
235
|
+
end
|
236
|
+
|
237
|
+
##
|
238
|
+
# @return [String] Pretty name of the default transport
|
239
|
+
#
|
240
|
+
def default_transport_name
|
241
|
+
@api.default_transport == :grpc ? "gRPC" : "REST"
|
190
242
|
end
|
191
243
|
|
192
244
|
def entrypoint_require
|
@@ -204,11 +256,15 @@ module Gapic
|
|
204
256
|
|
205
257
|
def dependencies
|
206
258
|
@dependencies ||= begin
|
207
|
-
deps = { "gapic-common" =>
|
208
|
-
deps["grpc-google-iam-v1"] =
|
259
|
+
deps = { "gapic-common" => "~> 1.0" }
|
260
|
+
deps["grpc-google-iam-v1"] = "~> 1.11" if iam_dependency?
|
209
261
|
extra_deps = gem_config_dependencies
|
210
|
-
deps.merge! extra_deps if extra_deps
|
211
262
|
deps.merge! mixins_model.dependencies if mixins_model.mixins?
|
263
|
+
# extra deps should be last, overriding mixins or defaults
|
264
|
+
deps.merge! extra_deps if extra_deps
|
265
|
+
# google-iam-v1 is a superset of grpc-google-iam-v1, so if both are
|
266
|
+
# listed, use only google-iam-v1.
|
267
|
+
deps.delete "grpc-google-iam-v1" if deps.include? "google-iam-v1"
|
212
268
|
deps
|
213
269
|
end
|
214
270
|
end
|
@@ -253,14 +309,13 @@ module Gapic
|
|
253
309
|
end
|
254
310
|
|
255
311
|
##
|
256
|
-
# Whether the "Enabling
|
257
|
-
#
|
258
|
-
# readme, AND it uses gRPC.
|
312
|
+
# Whether the "Enabling Logging" section of the readme should appear.
|
313
|
+
# This is true if there is a quick-start service displayed in the readme.
|
259
314
|
#
|
260
315
|
# @return [Boolean]
|
261
316
|
#
|
262
|
-
def
|
263
|
-
packages? && quick_start_service.usable_service_presenter.
|
317
|
+
def show_logging_docs?
|
318
|
+
packages? && !quick_start_service.usable_service_presenter.nil?
|
264
319
|
end
|
265
320
|
|
266
321
|
##
|
@@ -293,35 +348,54 @@ module Gapic
|
|
293
348
|
##
|
294
349
|
# There is a special case (from PoV of generator parameters)
|
295
350
|
# in gem dependencies where a dependency needs to be an array of strings
|
296
|
-
# e.g. ">= 1.6", "< 2.a"
|
351
|
+
# e.g. `">= 1.6", "< 2.a"``
|
297
352
|
# Rather than creating a special generator param case for this I will special-case it here.
|
298
|
-
#
|
299
|
-
#
|
353
|
+
# Supported separators are `|` and `+`. The latter is preferred.
|
354
|
+
# Spaces in the version requirements are optional.
|
355
|
+
# The above would be represented as `">=1.6+<2.a"`
|
300
356
|
#
|
301
357
|
# @return [Hash<String, String>, Hash{String=>Array<String>}, nil]
|
302
358
|
def gem_config_dependencies
|
303
359
|
return unless gem_config :extra_dependencies
|
304
|
-
gem_config(:extra_dependencies).
|
360
|
+
gem_config(:extra_dependencies).transform_values do |dep_versions|
|
305
361
|
if dep_versions.include? "|"
|
306
|
-
|
362
|
+
dep_versions.split("|").map { |dep_version| check_dep_version dep_version }
|
363
|
+
elsif dep_versions.include? "+"
|
364
|
+
dep_versions.split("+").map { |dep_version| check_dep_version dep_version }
|
307
365
|
else
|
308
|
-
|
366
|
+
check_dep_version dep_versions
|
309
367
|
end
|
310
|
-
end
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
def check_dep_version dep_version
|
372
|
+
match = /([>=<~]+)\s*(\d+(?:\.\w+)+)/.match dep_version
|
373
|
+
raise "Bad syntax for extra_dependency: #{dep_version}" unless match
|
374
|
+
"#{match[1]} #{match[2]}"
|
311
375
|
end
|
312
376
|
|
313
|
-
def
|
314
|
-
|
377
|
+
def denylist_protos
|
378
|
+
denylist = gem_config(:denylist) || gem_config(:blacklist)
|
315
379
|
|
316
|
-
return
|
317
|
-
return
|
380
|
+
return default_denylist_protos if denylist.nil?
|
381
|
+
return default_denylist_protos if denylist[:protos].nil?
|
318
382
|
|
319
|
-
|
383
|
+
default_denylist_protos[:protos]
|
320
384
|
end
|
321
385
|
|
322
|
-
def
|
386
|
+
def default_denylist_protos
|
323
387
|
["google/api/http.proto", "google/protobuf/descriptor.proto"]
|
324
388
|
end
|
389
|
+
|
390
|
+
def mixin_paths
|
391
|
+
mixins_model.mixins.map(&:require_str)
|
392
|
+
end
|
393
|
+
|
394
|
+
def useful_proto_file? file
|
395
|
+
return false if file.messages.empty? && file.enums.empty?
|
396
|
+
return false if denylist_protos.include? file.name
|
397
|
+
mixin_paths.none? { |m| file.name.start_with? m }
|
398
|
+
end
|
325
399
|
end
|
326
400
|
end
|
327
401
|
end
|
@@ -26,9 +26,17 @@ module Gapic
|
|
26
26
|
class MessagePresenter
|
27
27
|
include Gapic::Helpers::NamespaceHelper
|
28
28
|
|
29
|
+
# @return [String] String representation of this presenter type.
|
30
|
+
attr_reader :type
|
31
|
+
|
32
|
+
##
|
33
|
+
# @param api [Gapic::Schema::Api]
|
34
|
+
# @param message [Gapic::Schema::Message]
|
35
|
+
#
|
29
36
|
def initialize api, message
|
30
37
|
@api = api
|
31
38
|
@message = message
|
39
|
+
@type = "message"
|
32
40
|
end
|
33
41
|
|
34
42
|
def name
|
@@ -63,6 +71,13 @@ module Gapic
|
|
63
71
|
@nested_messages ||= @message.nested_messages.map { |m| MessagePresenter.new @api, m }
|
64
72
|
end
|
65
73
|
|
74
|
+
##
|
75
|
+
# @return [Boolean] Whether the message is marked as deprecated.
|
76
|
+
#
|
77
|
+
def is_deprecated?
|
78
|
+
@message.is_deprecated?
|
79
|
+
end
|
80
|
+
|
66
81
|
protected
|
67
82
|
|
68
83
|
def message_ruby_type message
|
@@ -0,0 +1,128 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2022 Google LLC
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
module Gapic
|
18
|
+
module Presenters
|
19
|
+
module Method
|
20
|
+
##
|
21
|
+
# A presenter for the Http Binding, used to generate code setting up gRPC transcoding
|
22
|
+
#
|
23
|
+
class HttpBindingPresenter
|
24
|
+
extend Forwardable
|
25
|
+
|
26
|
+
def initialize binding
|
27
|
+
@binding = binding
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Performs a limited URI transcoding to create a string that will interpolate
|
32
|
+
# the values from the request object to create a request URI at runtime.
|
33
|
+
# Currently only supports "value" into "request_object.value"
|
34
|
+
# @param [String] request_obj_name the name of the request object for the interpolation
|
35
|
+
# defaults to "request_pb"
|
36
|
+
# @return [String] A string to interpolate values from the request object into URI
|
37
|
+
#
|
38
|
+
def uri_for_transcoding
|
39
|
+
return path unless routing_params?
|
40
|
+
|
41
|
+
@binding.routing_params.reduce path do |uri, param|
|
42
|
+
param_esc = Regexp.escape param
|
43
|
+
uri.gsub(/{#{param_esc}[^}]*}/, "{#{param}}")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# The strings to initialize the `matches` parameter when initializing a
|
49
|
+
# grpc transcoder binding. The `matches` parameter is an array of arrays,
|
50
|
+
# so every string here is in a ruby array syntax. All strings except for the
|
51
|
+
# last one have a comma at the end.
|
52
|
+
#
|
53
|
+
# @return [Array<String>]
|
54
|
+
#
|
55
|
+
def routing_params_transcoder_matches_strings
|
56
|
+
return [] if routing_params_with_regexes.empty?
|
57
|
+
match_init_strings = routing_params_with_regexes.map do |name, regex, preserve_slashes|
|
58
|
+
"[\"#{name}\", %r{#{regex}}, #{preserve_slashes}],"
|
59
|
+
end
|
60
|
+
match_init_strings << match_init_strings.pop.chop # remove the trailing comma for the last element
|
61
|
+
match_init_strings
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# The strings to initialize the `bindings` parameter when initializing a
|
66
|
+
# gapic http binding. The `bindings` parameter is an array of FieldBinding objects,
|
67
|
+
# All strings except for the last one have a comma at the end.
|
68
|
+
#
|
69
|
+
# @return [Array<String>]
|
70
|
+
#
|
71
|
+
def routing_params_transcoder_field_binding_strings
|
72
|
+
return [] if routing_params_with_regexes.empty?
|
73
|
+
match_init_strings = routing_params_with_regexes.map do |name, regex, preserve_slashes|
|
74
|
+
"Gapic::Rest::GrpcTranscoder::HttpBinding::FieldBinding" \
|
75
|
+
".new(\"#{name}\", %r{#{regex}}, #{preserve_slashes}),"
|
76
|
+
end
|
77
|
+
match_init_strings << match_init_strings.pop.chop # remove the trailing comma for the last element
|
78
|
+
match_init_strings
|
79
|
+
end
|
80
|
+
|
81
|
+
# @!method verb?
|
82
|
+
# @return [Boolean]
|
83
|
+
# Whether a http verb is present for this binding.
|
84
|
+
# @!method verb
|
85
|
+
# @return [String]
|
86
|
+
# The http verb for this binding.
|
87
|
+
# @!method path?
|
88
|
+
# @return [Boolean]
|
89
|
+
# Whether a binding path is present and non-empty.
|
90
|
+
# @!method path
|
91
|
+
# @return [String]
|
92
|
+
# A binding path or an empty string if not present.
|
93
|
+
# @!method routing_params?
|
94
|
+
# @return [Boolean]
|
95
|
+
# Whether any routing params are present for this bindings.
|
96
|
+
# @!method body?
|
97
|
+
# @return [Boolean]
|
98
|
+
# Whether the binding has a `body` specified.
|
99
|
+
# @!method body
|
100
|
+
# @return [String]
|
101
|
+
# The `body` specified for this binding
|
102
|
+
# or an empty string if not specified.
|
103
|
+
def_delegators :@binding, :verb?, :verb, :path?, :path, :routing_params?, :body?, :body
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
##
|
108
|
+
# The segment key names, the regexes for their patterns (including
|
109
|
+
# the regexes for `*` patterns implied for the named segments without
|
110
|
+
# pattern explicitly specified), and whether the slash `/` symbols in
|
111
|
+
# the segment variable should be preserved (as opposed to percent-escaped).
|
112
|
+
#
|
113
|
+
# These are used to initialize the grpc transcoder `matches` binding parameter.
|
114
|
+
#
|
115
|
+
# @return [Array<Array<String|Boolean>>]
|
116
|
+
#
|
117
|
+
def routing_params_with_regexes
|
118
|
+
@routing_params_with_regexes ||= begin
|
119
|
+
@binding.routing_params_with_patterns.map do |name, pattern|
|
120
|
+
path_pattern = PathPattern.parse pattern
|
121
|
+
[name, path_pattern.to_field_regex_str, path_pattern.ends_with_double_star_pattern?]
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -109,7 +109,7 @@ module Gapic
|
|
109
109
|
def request_page_token_field
|
110
110
|
# Has a String page_token field which specifies the actual (next) page to retrieve.
|
111
111
|
@request_page_token_field ||= @request.fields.find do |f|
|
112
|
-
f.name == "page_token" && f.type ==
|
112
|
+
f.name == "page_token" && f.type == :TYPE_STRING
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
@@ -125,10 +125,7 @@ module Gapic
|
|
125
125
|
|
126
126
|
# Has the int32 page_size or int32 max_results field
|
127
127
|
# which defines the maximum number of paginated resources to return in the response.
|
128
|
-
page_size_types = [
|
129
|
-
Google::Protobuf::FieldDescriptorProto::Type::TYPE_UINT32,
|
130
|
-
Google::Protobuf::FieldDescriptorProto::Type::TYPE_INT32
|
131
|
-
]
|
128
|
+
page_size_types = [:TYPE_UINT32, :TYPE_INT32]
|
132
129
|
|
133
130
|
field = @request.fields.find do |f|
|
134
131
|
page_size_names.include?(f.name) && page_size_types.include?(f.type)
|
@@ -156,7 +153,7 @@ module Gapic
|
|
156
153
|
def response_next_page_token_field
|
157
154
|
# Has the string next_page_token field to be used in the next request as page_token to retrieve the next page.
|
158
155
|
@response_next_page_token_field ||= @response.fields.find do |f|
|
159
|
-
f.name == "next_page_token" && f.type ==
|
156
|
+
f.name == "next_page_token" && f.type == :TYPE_STRING
|
160
157
|
end
|
161
158
|
end
|
162
159
|
|
@@ -169,8 +166,7 @@ module Gapic
|
|
169
166
|
@response_results_field ||= begin
|
170
167
|
map_fields = @response.fields.find_all(&:map?)
|
171
168
|
repeated_fields = @response.fields.find_all do |f|
|
172
|
-
!f.map? &&
|
173
|
-
f.label == Google::Protobuf::FieldDescriptorProto::Label::LABEL_REPEATED
|
169
|
+
!f.map? && f.label == :LABEL_REPEATED
|
174
170
|
end
|
175
171
|
|
176
172
|
if map_fields.count == 1
|
@@ -187,6 +183,26 @@ module Gapic
|
|
187
183
|
end
|
188
184
|
end
|
189
185
|
|
186
|
+
# @private
|
187
|
+
FIELD_TYPE_MAPPING = {
|
188
|
+
TYPE_DOUBLE: "::Float",
|
189
|
+
TYPE_FLOAT: "::Float",
|
190
|
+
TYPE_INT64: "::Integer",
|
191
|
+
TYPE_UINT64: "::Integer",
|
192
|
+
TYPE_INT32: "::Integer",
|
193
|
+
TYPE_FIXED64: "::Integer",
|
194
|
+
TYPE_FIXED32: "::Integer",
|
195
|
+
TYPE_BOOL: "::Boolean",
|
196
|
+
TYPE_STRING: "::String",
|
197
|
+
TYPE_BYTES: "::String",
|
198
|
+
TYPE_UINT32: "::Integer",
|
199
|
+
TYPE_SFIXED32: "::Integer",
|
200
|
+
TYPE_SFIXED64: "::Integer",
|
201
|
+
TYPE_SINT32: "::Integer",
|
202
|
+
TYPE_SINT64: "::Integer"
|
203
|
+
}.freeze
|
204
|
+
private_constant :FIELD_TYPE_MAPPING
|
205
|
+
|
190
206
|
##
|
191
207
|
# A helper to get a Ruby doc-type for a paginated element.
|
192
208
|
#
|
@@ -201,14 +217,7 @@ module Gapic
|
|
201
217
|
# TODO: handle when arg message is nil and enum is the type
|
202
218
|
message_ruby_type field.enum
|
203
219
|
else
|
204
|
-
|
205
|
-
when 1, 2 then "::Float"
|
206
|
-
when 3, 4, 5, 6, 7, 13, 15, 16, 17, 18 then "::Integer"
|
207
|
-
when 9, 12 then "::String"
|
208
|
-
when 8 then "::Boolean"
|
209
|
-
else
|
210
|
-
"::Object"
|
211
|
-
end
|
220
|
+
FIELD_TYPE_MAPPING[field.type] || "::Object"
|
212
221
|
end
|
213
222
|
end
|
214
223
|
|