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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +333 -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 -32
- data/lib/gapic/generators/default_generator_parameters.rb +11 -3
- data/lib/gapic/grpc_service_config/{service_config.rb → config.rb} +2 -2
- data/lib/gapic/grpc_service_config/parser.rb +10 -10
- data/lib/gapic/model/api_metadata.rb +173 -0
- data/lib/gapic/model/method/http_annotation.rb +221 -0
- data/lib/gapic/model/method/lro.rb +163 -0
- data/lib/gapic/model/method/routing.rb +248 -0
- data/lib/gapic/model/mixins.rb +247 -0
- data/lib/gapic/model/model_error.rb +26 -0
- data/lib/gapic/model/service/nonstandard_lro_provider.rb +292 -0
- data/lib/gapic/model.rb +22 -0
- data/lib/gapic/package_snippets.rb +159 -0
- data/lib/gapic/path_pattern/parser.rb +11 -2
- data/lib/gapic/path_pattern/pattern.rb +64 -1
- data/lib/gapic/path_pattern/segment.rb +108 -13
- 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 +140 -34
- data/lib/gapic/presenters/{service_config_presenter.rb → grpc_service_config_presenter.rb} +1 -1
- 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 +149 -35
- data/lib/gapic/presenters/method_rest_presenter.rb +79 -168
- 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 +90 -0
- 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 +361 -27
- data/lib/gapic/presenters/service_rest_presenter.rb +247 -13
- 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 -9
- data/lib/gapic/presenters.rb +5 -1
- data/lib/gapic/runner.rb +1 -1
- data/lib/gapic/schema/api.rb +105 -5
- data/lib/gapic/schema/loader.rb +69 -21
- 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 +152 -0
- data/lib/gapic/schema/wrappers.rb +309 -25
- 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/gem/{yardopts.erb → yardopts.text.erb} +1 -1
- 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} +7 -6
- data/templates/default/lib/_package_rest.text.erb +24 -0
- data/templates/default/lib/{_service.erb → _service.text.erb} +14 -20
- 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} +77 -17
- data/templates/default/service/client/{_config.erb → _config.text.erb} +39 -8
- data/templates/default/service/client/_nonstandard_lro.text.erb +57 -0
- data/templates/default/service/client/{_operations.erb → _operations.text.erb} +24 -3
- data/templates/default/service/client/{_self_configure_defaults.erb → _self_configure_defaults.text.erb} +2 -2
- 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} +3 -9
- 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.text.erb +10 -0
- data/templates/default/service/client/method/def/_response_nonstandard_lro.text.erb +23 -0
- 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/def/_routing_params.text.erb +36 -0
- 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.text.erb +202 -0
- 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.text.erb +12 -0
- data/templates/default/service/rest/client/method/def/_response_nonstandard_lro.text.erb +24 -0
- 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/rest/nonstandard_lro.text.erb +6 -0
- 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/{_assert_response.erb → _assert_response.text.erb} +3 -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 +209 -230
- data/lib/google/api/annotations.pb.rb +0 -39
- data/lib/google/api/client.pb.rb +0 -43
- data/lib/google/api/field_behavior.pb.rb +0 -51
- data/lib/google/api/http.pb.rb +0 -60
- data/lib/google/api/resource.pb.rb +0 -80
- data/lib/google/longrunning/operations.pb.rb +0 -115
- data/lib/google/protobuf/any.pb.rb +0 -40
- data/lib/google/protobuf/compiler/plugin.pb.rb +0 -79
- data/lib/google/protobuf/descriptor.pb.rb +0 -360
- data/lib/google/protobuf/empty.pb.rb +0 -36
- 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/def/_response.erb +0 -6
- 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/_client.erb +0 -106
- data/templates/default/service/rest/client/_config.erb +0 -122
- data/templates/default/service/rest/client/method/def/_response.erb +0 -8
- data/templates/default/service/rest/client/method/def/_response_lro.erb +0 -7
- 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/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/{_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/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/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/{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
@@ -0,0 +1,159 @@
|
|
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
|
+
require "google/protobuf/compiler/plugin_pb"
|
18
|
+
require "google/cloud/tools/snippetgen/snippetindex/v1/snippet_index_pb"
|
19
|
+
require "json"
|
20
|
+
|
21
|
+
module Gapic
|
22
|
+
# An object that collects snippets for a package and generates the metadata
|
23
|
+
# content.
|
24
|
+
class PackageSnippets
|
25
|
+
# @private
|
26
|
+
SnippetIndex = ::Google::Cloud::Tools::SnippetGen::SnippetIndex::V1
|
27
|
+
|
28
|
+
##
|
29
|
+
# Start collecting snippets for a package
|
30
|
+
#
|
31
|
+
# @param proto_package [String] Fully qualified proto package name including
|
32
|
+
# API version, e.g. `google.cloud.translate.v3`. Required.
|
33
|
+
# @param gem_name [String] Name of the gem being generated, e.g.
|
34
|
+
# `google-cloud-translate-v3`. Required.
|
35
|
+
# @param snippet_dir [String] Directory where snippets are generated.
|
36
|
+
# Optional. Defaults to `snippets`.
|
37
|
+
#
|
38
|
+
def initialize proto_package:, gem_name:, snippet_dir: "snippets"
|
39
|
+
api = SnippetIndex::Api.new(
|
40
|
+
id: proto_package,
|
41
|
+
version: proto_package.split(".").last
|
42
|
+
)
|
43
|
+
client_library_object = SnippetIndex::ClientLibrary.new(
|
44
|
+
name: gem_name,
|
45
|
+
version: "",
|
46
|
+
language: "RUBY",
|
47
|
+
apis: [api]
|
48
|
+
)
|
49
|
+
@index_object = SnippetIndex::Index.new(
|
50
|
+
client_library: client_library_object
|
51
|
+
)
|
52
|
+
@metadata_filename = "#{snippet_dir}/snippet_metadata_#{proto_package}.json"
|
53
|
+
@snippet_files = []
|
54
|
+
end
|
55
|
+
|
56
|
+
##
|
57
|
+
# Add a snippet to the collection
|
58
|
+
#
|
59
|
+
# @param method_presenter [Gapic::Presenters::MethodPresenter]
|
60
|
+
# @param snippet_presenter [Gapic::Presenters::SnippetPresenter]
|
61
|
+
# @param snippet_file [Google::Protobuf::Compiler::CodeGeneratorResponse::File]
|
62
|
+
# @return [self]
|
63
|
+
#
|
64
|
+
def add method_presenter:, snippet_presenter:, snippet_file:
|
65
|
+
service_presenter = method_presenter.service
|
66
|
+
snippet_lines = [""] + snippet_file.content.split("\n")
|
67
|
+
@index_object.snippets <<
|
68
|
+
build_snippet_object(snippet_presenter, method_presenter, service_presenter, snippet_lines)
|
69
|
+
@snippet_files << snippet_file
|
70
|
+
self
|
71
|
+
end
|
72
|
+
|
73
|
+
##
|
74
|
+
# Return a list of files to render for this package. This includes all the
|
75
|
+
# snippet files themselves, and the metadata file.
|
76
|
+
#
|
77
|
+
# @return [Array<Google::Protobuf::Compiler::CodeGeneratorResponse::File>]
|
78
|
+
#
|
79
|
+
def files
|
80
|
+
metadata_content = JSON.pretty_generate json_value_for @index_object
|
81
|
+
metadata_file = Google::Protobuf::Compiler::CodeGeneratorResponse::File.new(
|
82
|
+
name: @metadata_filename,
|
83
|
+
content: metadata_content
|
84
|
+
)
|
85
|
+
@snippet_files + [metadata_file]
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def build_snippet_object snippet_presenter, method_presenter, service_presenter, snippet_lines
|
91
|
+
service_presenter = service_presenter.rest if snippet_presenter.transport == :rest
|
92
|
+
SnippetIndex::Snippet.new(
|
93
|
+
region_tag: snippet_presenter.region_tag,
|
94
|
+
title: snippet_presenter.snippet_name,
|
95
|
+
description: snippet_presenter.description,
|
96
|
+
file: snippet_presenter.snippet_file_path,
|
97
|
+
language: "RUBY",
|
98
|
+
client_method: build_client_method_object(method_presenter, service_presenter),
|
99
|
+
canonical: true,
|
100
|
+
origin: "API_DEFINITION",
|
101
|
+
segments: build_segments_array(snippet_lines, snippet_presenter.region_tag)
|
102
|
+
)
|
103
|
+
end
|
104
|
+
|
105
|
+
def build_client_method_object method_presenter, service_presenter
|
106
|
+
parameter = SnippetIndex::ClientMethod::Parameter.new(
|
107
|
+
type: method_presenter.request_type,
|
108
|
+
name: "request"
|
109
|
+
)
|
110
|
+
client = SnippetIndex::ServiceClient.new(
|
111
|
+
short_name: service_presenter.client_suffix_for_default_transport,
|
112
|
+
full_name: service_presenter.client_name_full
|
113
|
+
)
|
114
|
+
SnippetIndex::ClientMethod.new(
|
115
|
+
short_name: method_presenter.name,
|
116
|
+
full_name: "#{service_presenter.client_name_full}##{method_presenter.name}",
|
117
|
+
async: false,
|
118
|
+
parameters: [parameter],
|
119
|
+
result_type: method_presenter.return_type,
|
120
|
+
client: client,
|
121
|
+
method: build_method_object(method_presenter, service_presenter)
|
122
|
+
)
|
123
|
+
end
|
124
|
+
|
125
|
+
def build_method_object method_presenter, service_presenter
|
126
|
+
service = SnippetIndex::Service.new(
|
127
|
+
short_name: service_presenter.name,
|
128
|
+
full_name: service_presenter.grpc_full_name
|
129
|
+
)
|
130
|
+
SnippetIndex::Method.new(
|
131
|
+
short_name: method_presenter.grpc_name,
|
132
|
+
full_name: method_presenter.grpc_full_name,
|
133
|
+
service: service
|
134
|
+
)
|
135
|
+
end
|
136
|
+
|
137
|
+
# Currently this builds only the FULL segment. We can fill out additional
|
138
|
+
# segment types once requirements have been clarified.
|
139
|
+
def build_segments_array snippet_lines, region_tag
|
140
|
+
start_tag_line = snippet_lines.index { |line| line.include? "[START #{region_tag}]" }
|
141
|
+
end_tag_line = snippet_lines.index { |line| line.include? "[END #{region_tag}]" }
|
142
|
+
result = []
|
143
|
+
if start_tag_line && end_tag_line
|
144
|
+
result << SnippetIndex::Snippet::Segment.new(
|
145
|
+
start: start_tag_line + 1,
|
146
|
+
end: end_tag_line - 1,
|
147
|
+
type: "FULL"
|
148
|
+
)
|
149
|
+
end
|
150
|
+
result
|
151
|
+
end
|
152
|
+
|
153
|
+
def json_value_for value
|
154
|
+
json = value.class.encode_json value, preserve_proto_fieldnames: true,
|
155
|
+
emit_defaults: true
|
156
|
+
JSON.parse json
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -14,6 +14,7 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
|
+
require "active_support/inflector"
|
17
18
|
require "gapic/path_pattern/segment"
|
18
19
|
require "gapic/path_pattern/pattern"
|
19
20
|
|
@@ -39,7 +40,7 @@ module Gapic
|
|
39
40
|
segments << segment
|
40
41
|
end
|
41
42
|
|
42
|
-
Pattern.new path_pattern, segments
|
43
|
+
Pattern.new format_pattern(path_pattern), segments
|
43
44
|
end
|
44
45
|
|
45
46
|
# @private
|
@@ -117,7 +118,7 @@ module Gapic
|
|
117
118
|
match = simple_resource_id_regex.match url_pattern
|
118
119
|
segment_pattern = match[:segment_pattern]
|
119
120
|
|
120
|
-
resource_name = match[:resource_name]
|
121
|
+
resource_name = ActiveSupport::Inflector.underscore match[:resource_name]
|
121
122
|
resource_pattern = match[:resource_pattern] if match.names.include? "resource_pattern"
|
122
123
|
resource_patterns = resource_pattern.nil? ? [] : [resource_pattern]
|
123
124
|
|
@@ -141,6 +142,14 @@ module Gapic
|
|
141
142
|
remainder = match.post_match
|
142
143
|
[segment, remainder]
|
143
144
|
end
|
145
|
+
|
146
|
+
# Formats variables within a path pattern.
|
147
|
+
# @private
|
148
|
+
def self.format_pattern pattern
|
149
|
+
pattern.gsub(/\{([a-zA-Z0-9_]+)\}/) do
|
150
|
+
"{#{ActiveSupport::Inflector.underscore ::Regexp.last_match(1)}}"
|
151
|
+
end
|
152
|
+
end
|
144
153
|
end
|
145
154
|
end
|
146
155
|
end
|
@@ -38,12 +38,66 @@ module Gapic
|
|
38
38
|
end
|
39
39
|
|
40
40
|
##
|
41
|
-
# All argument
|
41
|
+
# All argument from this pattern, including ids for positional arguments
|
42
42
|
# @return [Array<String>]
|
43
43
|
def arguments
|
44
44
|
@segments.select(&:provides_arguments?).map(&:arguments).flatten
|
45
45
|
end
|
46
46
|
|
47
|
+
##
|
48
|
+
# Whether this is a basic single-star ("*") pattern
|
49
|
+
# @return [Boolean]
|
50
|
+
def star_pattern?
|
51
|
+
@segments.length == 1 && @segments[0].pattern == "*"
|
52
|
+
end
|
53
|
+
|
54
|
+
##
|
55
|
+
# Whether this is a basic double-star ("**") pattern
|
56
|
+
# @return [Boolean]
|
57
|
+
def double_star_pattern?
|
58
|
+
@segments.length == 1 && @segments[0].pattern == "**"
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# Whether this pattern ends with a double-star ("**")
|
63
|
+
# @return [Boolean]
|
64
|
+
def ends_with_double_star_pattern?
|
65
|
+
segments.last.pattern.end_with? "**"
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Converts the PathPattern into a regex string
|
70
|
+
# @return [String]
|
71
|
+
def to_regex_str
|
72
|
+
regex_str = segments.first.to_regex_str
|
73
|
+
|
74
|
+
# for double wildcards the leading `/`` is optional
|
75
|
+
# e.g. `foo/**` should match `foo`
|
76
|
+
# this is why segments 'bring' the leading separator
|
77
|
+
# with them as they build the pattern
|
78
|
+
segments.drop(1).each_with_index do |segment, _index|
|
79
|
+
is_double_wildcard = segment.pattern == "**"
|
80
|
+
|
81
|
+
regex_str = if is_double_wildcard
|
82
|
+
"#{regex_str}(?:/.*)?"
|
83
|
+
else
|
84
|
+
"#{regex_str}/#{segment.to_regex_str}"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
regex_str
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# Converts the PathPattern into a regex string that matches a whole field
|
93
|
+
# - adds markers for the beginning and end of the string
|
94
|
+
# - adds handling of an optional tail `/` if needed
|
95
|
+
# @return [String]
|
96
|
+
def to_field_regex_str
|
97
|
+
tail_slash_accept = ends_with_double_star_pattern? ? "" : "/?"
|
98
|
+
"^#{to_regex_str}#{tail_slash_accept}$"
|
99
|
+
end
|
100
|
+
|
47
101
|
##
|
48
102
|
# Whether pattern contains a positional segment
|
49
103
|
# @return [Boolean]
|
@@ -76,6 +130,15 @@ module Gapic
|
|
76
130
|
parent_pattern_segments = last_segment.provides_arguments? ? segments[0...-2] : segments[0...-1]
|
77
131
|
parent_pattern_segments.map(&:pattern_template).join("/")
|
78
132
|
end
|
133
|
+
|
134
|
+
##
|
135
|
+
# The pattern with the resource names stripped
|
136
|
+
# from the ResourceId segments
|
137
|
+
# (e.g. `collections/{resource_id=foo/*}` => `collections/foo/*`)
|
138
|
+
#
|
139
|
+
def simplified_pattern
|
140
|
+
@segments.map(&:simplified_pattern).join("/")
|
141
|
+
end
|
79
142
|
end
|
80
143
|
end
|
81
144
|
end
|
@@ -97,11 +97,37 @@ module Gapic
|
|
97
97
|
pattern
|
98
98
|
end
|
99
99
|
|
100
|
+
##
|
101
|
+
# Whether the segment is a resource id segment
|
102
|
+
# @return [Boolean]
|
103
|
+
def resource_id_segment?
|
104
|
+
false
|
105
|
+
end
|
106
|
+
|
107
|
+
##
|
108
|
+
# The difference between `simplified_pattern` and `pattern`
|
109
|
+
# does not exist for the Positional segments
|
110
|
+
# @return [String]
|
111
|
+
def simplified_pattern
|
112
|
+
pattern
|
113
|
+
end
|
114
|
+
|
115
|
+
##
|
116
|
+
# Creates a string with a regex representation of this segment's pattern
|
117
|
+
# @return [String]
|
118
|
+
def to_regex_str
|
119
|
+
if pattern == "**"
|
120
|
+
".*"
|
121
|
+
else
|
122
|
+
"[^/]+"
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
100
126
|
# @private
|
101
127
|
def == other
|
102
128
|
return false unless other.is_a? self.class
|
103
129
|
|
104
|
-
|
130
|
+
pattern == other.pattern && position == other.position
|
105
131
|
end
|
106
132
|
end
|
107
133
|
|
@@ -129,6 +155,12 @@ module Gapic
|
|
129
155
|
@type = type
|
130
156
|
@pattern = pattern
|
131
157
|
@resource_names = resource_names
|
158
|
+
|
159
|
+
# For the segments specified like `{foo}`, the implied resource pattern is `*`
|
160
|
+
# `{foo}` === `{foo=*}`
|
161
|
+
if resource_patterns.empty?
|
162
|
+
resource_patterns = ["*"]
|
163
|
+
end
|
132
164
|
@resource_patterns = resource_patterns
|
133
165
|
end
|
134
166
|
|
@@ -139,15 +171,9 @@ module Gapic
|
|
139
171
|
false
|
140
172
|
end
|
141
173
|
|
142
|
-
##
|
143
|
-
# Whether the segment provides a resource pattern
|
144
|
-
# @return [Boolean]
|
145
|
-
def resource_pattern?
|
146
|
-
resource_patterns.any?
|
147
|
-
end
|
148
|
-
|
149
174
|
##
|
150
175
|
# Whether the segment provides a nontrivial resource pattern
|
176
|
+
# (not `*` or `**`)
|
151
177
|
# @return [Boolean]
|
152
178
|
def nontrivial_resource_pattern?
|
153
179
|
resource_patterns.any? { |res_pattern| !res_pattern.match?(/^\*+$/) }
|
@@ -168,8 +194,8 @@ module Gapic
|
|
168
194
|
end
|
169
195
|
|
170
196
|
##
|
171
|
-
# Returns a segment's pattern filled with dummy values
|
172
|
-
#
|
197
|
+
# Returns a segment's pattern filled with dummy values.
|
198
|
+
# Names of the values are generated starting from the index provided.
|
173
199
|
# @param start_index [Integer] a starting index for dummy value generation
|
174
200
|
# @return [String] a pattern filled with dummy values
|
175
201
|
def expected_path_for_dummy_values start_index
|
@@ -184,7 +210,13 @@ module Gapic
|
|
184
210
|
# Path string for this segment
|
185
211
|
# @return [String]
|
186
212
|
def path_string
|
187
|
-
type == :simple_resource_id
|
213
|
+
if type == :simple_resource_id
|
214
|
+
name = resource_names[0]
|
215
|
+
name = "binding.local_variable_get :#{name}" if Gapic::RubyInfo.keywords.include? name
|
216
|
+
"\#{#{name}}"
|
217
|
+
else
|
218
|
+
pattern.gsub "{", "\#{"
|
219
|
+
end
|
188
220
|
end
|
189
221
|
|
190
222
|
##
|
@@ -194,6 +226,46 @@ module Gapic
|
|
194
226
|
"*"
|
195
227
|
end
|
196
228
|
|
229
|
+
##
|
230
|
+
# Whether the segment is a resource id segment
|
231
|
+
# @return [Boolean]
|
232
|
+
def resource_id_segment?
|
233
|
+
true
|
234
|
+
end
|
235
|
+
|
236
|
+
##
|
237
|
+
# The pattern with the resource name
|
238
|
+
# (e.g. `foo` in `{foo=bar/*}`) stripped.
|
239
|
+
# So `{foo=bar/*}` -> `bar/*`.
|
240
|
+
#
|
241
|
+
# Not implemented for multivariate segments
|
242
|
+
# (e.g `{foo}~{bar}`).
|
243
|
+
#
|
244
|
+
# @return [String]
|
245
|
+
def simplified_pattern
|
246
|
+
if resource_patterns.count > 1
|
247
|
+
raise "Not implemented for multivariate ResourceId segments"
|
248
|
+
end
|
249
|
+
resource_patterns[0]
|
250
|
+
end
|
251
|
+
|
252
|
+
##
|
253
|
+
# Creates a string with a regex representation of this segment's pattern
|
254
|
+
# @return [String]
|
255
|
+
def to_regex_str
|
256
|
+
raise "Not implemented for multivariate ResourceId segments" if resource_patterns.count > 1
|
257
|
+
|
258
|
+
resource_pattern = if resource_patterns[0].nil?
|
259
|
+
"*"
|
260
|
+
else
|
261
|
+
resource_patterns[0]
|
262
|
+
end
|
263
|
+
|
264
|
+
resource_pattern_regex = Gapic::PathPattern::Parser.parse(resource_pattern).to_regex_str
|
265
|
+
|
266
|
+
"(?<#{resource_names[0]}>#{resource_pattern_regex})"
|
267
|
+
end
|
268
|
+
|
197
269
|
##
|
198
270
|
# Initialization helper to create a simple resource without a pattern
|
199
271
|
# @param name [String] resource name
|
@@ -206,9 +278,10 @@ module Gapic
|
|
206
278
|
def == other
|
207
279
|
return false unless other.is_a? self.class
|
208
280
|
|
209
|
-
|
281
|
+
type == other.type &&
|
282
|
+
pattern == other.pattern &&
|
210
283
|
resource_names == other.resource_names &&
|
211
|
-
resource_patterns == other.resource_patterns
|
284
|
+
resource_patterns == other.resource_patterns
|
212
285
|
end
|
213
286
|
end
|
214
287
|
|
@@ -272,6 +345,28 @@ module Gapic
|
|
272
345
|
pattern
|
273
346
|
end
|
274
347
|
|
348
|
+
##
|
349
|
+
# Whether the segment is a resource id segment
|
350
|
+
# @return [Boolean]
|
351
|
+
def resource_id_segment?
|
352
|
+
false
|
353
|
+
end
|
354
|
+
|
355
|
+
##
|
356
|
+
# The difference between `simplified_pattern` and `pattern`
|
357
|
+
# does not exist for the CollectionId segments
|
358
|
+
# @return [String]
|
359
|
+
def simplified_pattern
|
360
|
+
pattern
|
361
|
+
end
|
362
|
+
|
363
|
+
##
|
364
|
+
# Creates a string with a regex representation of this segment's pattern
|
365
|
+
# @return [String]
|
366
|
+
def to_regex_str
|
367
|
+
pattern
|
368
|
+
end
|
369
|
+
|
275
370
|
# @private
|
276
371
|
def == other
|
277
372
|
return false unless other.is_a? self.class
|
@@ -20,8 +20,15 @@ module Gapic
|
|
20
20
|
# A presenter for proto enums.
|
21
21
|
#
|
22
22
|
class EnumPresenter
|
23
|
+
# @return [String] String representation of this presenter type.
|
24
|
+
attr_reader :type
|
25
|
+
|
26
|
+
##
|
27
|
+
# @param enum [Gapic::Schema::Enum]
|
28
|
+
#
|
23
29
|
def initialize enum
|
24
30
|
@enum = enum
|
31
|
+
@type = "enum"
|
25
32
|
end
|
26
33
|
|
27
34
|
def name
|
@@ -35,6 +42,13 @@ module Gapic
|
|
35
42
|
def values
|
36
43
|
@values ||= @enum.values.map { |v| EnumValuePresenter.new v }
|
37
44
|
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# @return [Boolean] Whether the enum is marked as deprecated.
|
48
|
+
#
|
49
|
+
def is_deprecated?
|
50
|
+
@enum.is_deprecated?
|
51
|
+
end
|
38
52
|
end
|
39
53
|
end
|
40
54
|
end
|
@@ -14,6 +14,8 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
|
+
require "gapic/ruby_info"
|
18
|
+
|
17
19
|
module Gapic
|
18
20
|
module Presenters
|
19
21
|
##
|
@@ -24,8 +26,9 @@ module Gapic
|
|
24
26
|
@value = value
|
25
27
|
end
|
26
28
|
|
29
|
+
# @return [String] The enum value name without keyword collision.
|
27
30
|
def name
|
28
|
-
@value.name
|
31
|
+
Gapic::RubyInfo.keywords.include?(@value.name) ? "#{@value.parent.name}::#{@value.name}" : @value.name
|
29
32
|
end
|
30
33
|
|
31
34
|
def doc_description
|
@@ -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
|