gapic-generator 0.3.3 → 0.6.0
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 +34 -0
- data/lib/gapic/formatting_utils.rb +7 -7
- data/lib/gapic/generator/version.rb +1 -1
- data/lib/gapic/generators/default_generator.rb +16 -14
- data/lib/gapic/helpers/filepath_helper.rb +1 -0
- data/lib/gapic/helpers/namespace_helper.rb +8 -1
- data/lib/gapic/path_template/segment.rb +7 -0
- data/lib/gapic/presenters/field_presenter.rb +9 -9
- data/lib/gapic/presenters/file_presenter.rb +1 -1
- data/lib/gapic/presenters/gem_presenter.rb +28 -2
- data/lib/gapic/presenters/method_presenter.rb +23 -17
- data/lib/gapic/presenters/package_presenter.rb +11 -3
- data/lib/gapic/presenters/resource_presenter.rb +55 -35
- data/lib/gapic/presenters/service_presenter.rb +66 -23
- data/lib/gapic/ruby_info.rb +93 -0
- data/lib/gapic/schema/api.rb +63 -1
- data/templates/default/gem/gemfile.erb +3 -0
- data/templates/default/gem/gemspec.erb +7 -6
- data/templates/default/gem/rakefile.erb +1 -0
- data/templates/default/gem/test_helper.erb +8 -0
- data/templates/default/layouts/_ruby.erb +5 -4
- data/templates/default/lib/_service.erb +2 -0
- data/templates/default/proto_docs/_message.erb +2 -2
- data/templates/default/service/client.erb +1 -1
- data/templates/default/service/client/_client.erb +17 -4
- data/templates/default/service/client/_config.erb +33 -29
- data/templates/default/service/client/_credentials.erb +1 -1
- data/templates/default/service/client/_operations.erb +3 -1
- data/templates/default/service/client/method/def/_options_defaults.erb +2 -2
- data/templates/default/service/client/method/def/_request_normal.erb +2 -2
- data/templates/default/service/client/method/def/_request_streaming.erb +3 -3
- data/templates/default/service/client/method/def/_response_normal.erb +1 -1
- data/templates/default/service/client/method/def/_response_paged.erb +2 -2
- data/templates/default/service/client/method/docs/_error.erb +1 -1
- data/templates/default/service/client/method/docs/_request_normal.erb +2 -2
- data/templates/default/service/client/method/docs/_request_streaming.erb +2 -2
- data/templates/default/service/client/method/docs/_response.erb +1 -1
- data/templates/default/service/client/resource/_def.erb +1 -1
- data/templates/default/service/client/resource/_multi.erb +4 -7
- data/templates/default/service/client/resource/_single.erb +2 -3
- data/templates/default/service/credentials.erb +1 -1
- data/templates/default/service/operations.erb +1 -1
- data/templates/default/service/paths.erb +1 -1
- data/templates/default/service/test/_resource.erb +16 -0
- data/templates/default/service/test/client.erb +17 -4
- data/templates/default/service/test/client_operations.erb +3 -4
- data/templates/default/service/test/client_paths.erb +17 -0
- data/templates/default/service/test/method/_configure.erb +19 -0
- metadata +8 -3
@@ -5,12 +5,13 @@
|
|
5
5
|
<%= @requires -%>
|
6
6
|
<%- end -%>
|
7
7
|
|
8
|
-
<%- namespace.split("::").
|
8
|
+
<%- namespace_components = namespace.split("::").reject(&:empty?) -%>
|
9
|
+
<%- namespace_components.each_with_index do |ns, i| -%>
|
9
10
|
<%= indent "module #{ns}", i*2 %>
|
10
11
|
<%- end -%>
|
11
|
-
<%= indent yield,
|
12
|
-
<%-
|
13
|
-
<%= indent "end", (
|
12
|
+
<%= indent yield, namespace_components.count*2 %>
|
13
|
+
<%- namespace_components.count.times do |i| -%>
|
14
|
+
<%= indent "end", (namespace_components.count-1-i)*2 %>
|
14
15
|
<%- end -%>
|
15
16
|
<%- if instance_variable_defined? :@footer -%>
|
16
17
|
|
@@ -6,7 +6,9 @@ require "gapic/config/method"
|
|
6
6
|
|
7
7
|
require "<%= service.gem.version_require %>"
|
8
8
|
|
9
|
+
<%- unless service.generic_endpoint? -%>
|
9
10
|
require "<%= service.credentials_require %>"
|
11
|
+
<%- end -%>
|
10
12
|
<%- if service.paths? -%>
|
11
13
|
require "<%= service.paths_require %>"
|
12
14
|
<%- end -%>
|
@@ -10,8 +10,8 @@
|
|
10
10
|
<%- end -%>
|
11
11
|
<%- end -%>
|
12
12
|
class <%= message.name %>
|
13
|
-
include Google::Protobuf::MessageExts
|
14
|
-
extend Google::Protobuf::MessageExts::ClassMethods
|
13
|
+
include ::Google::Protobuf::MessageExts
|
14
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
15
15
|
<%- message.nested_messages.each do |submsg| -%>
|
16
16
|
|
17
17
|
<%= indent_tail render(partial: "proto_docs/message", locals: { message: submsg }), 2 %>
|
@@ -29,7 +29,7 @@ class <%= service.client_name %>
|
|
29
29
|
# To modify the configuration for all <%= service.name %> clients:
|
30
30
|
#
|
31
31
|
# <%= service.client_name_full %>.configure do |config|
|
32
|
-
# config.timeout =
|
32
|
+
# config.timeout = 10.0
|
33
33
|
# end
|
34
34
|
#
|
35
35
|
# @yield [config] Configure the <%= service.client_name %> client.
|
@@ -75,7 +75,7 @@ class <%= service.client_name %>
|
|
75
75
|
# configuration:
|
76
76
|
#
|
77
77
|
# client = <%= service.client_name_full %>.new do |config|
|
78
|
-
# config.timeout =
|
78
|
+
# config.timeout = 10.0
|
79
79
|
# end
|
80
80
|
#
|
81
81
|
# @yield [config] Configure the <%= service.name %> client.
|
@@ -96,19 +96,23 @@ class <%= service.client_name %>
|
|
96
96
|
|
97
97
|
# Create credentials
|
98
98
|
credentials = @config.credentials
|
99
|
+
<%- unless service.generic_endpoint? -%>
|
99
100
|
credentials ||= Credentials.default scope: @config.scope
|
100
101
|
if credentials.is_a?(String) || credentials.is_a?(Hash)
|
101
102
|
credentials = Credentials.new credentials, scope: @config.scope
|
102
103
|
end
|
103
|
-
|
104
|
+
<%- end -%>
|
105
|
+
@quota_project_id = @config.quota_project
|
106
|
+
@quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
|
104
107
|
|
105
108
|
<%- if service.lro? -%>
|
106
109
|
<%= service.lro_client_ivar %> = <%= service.operations_name %>.new do |config|
|
107
110
|
config.credentials = credentials
|
111
|
+
config.endpoint = @config.endpoint
|
108
112
|
end
|
109
113
|
|
110
114
|
<%- end -%>
|
111
|
-
@<%= service.stub_name %> = Gapic::ServiceStub.new(
|
115
|
+
@<%= service.stub_name %> = ::Gapic::ServiceStub.new(
|
112
116
|
<%= service.proto_service_stub_name_full %>,
|
113
117
|
credentials: credentials,
|
114
118
|
endpoint: @config.endpoint,
|
@@ -117,6 +121,15 @@ class <%= service.client_name %>
|
|
117
121
|
)
|
118
122
|
end
|
119
123
|
|
124
|
+
<%- if service.lro? -%>
|
125
|
+
##
|
126
|
+
# Get the associated client for long-running operations.
|
127
|
+
#
|
128
|
+
# @return [<%= service.operations_name_full %>]
|
129
|
+
#
|
130
|
+
attr_reader :<%= service.lro_client_var %>
|
131
|
+
|
132
|
+
<%- end -%>
|
120
133
|
# Service calls
|
121
134
|
<%- service.methods.each do |method| -%>
|
122
135
|
|
@@ -20,22 +20,22 @@
|
|
20
20
|
# to 20 seconds, and all remaining timeouts to 10 seconds:
|
21
21
|
#
|
22
22
|
# <%= service.client_name_full %>.configure do |config|
|
23
|
-
# config.timeout =
|
24
|
-
# config.rpcs.<%= method_service.methods.first.name %>.timeout =
|
23
|
+
# config.timeout = 10.0
|
24
|
+
# config.rpcs.<%= method_service.methods.first.name %>.timeout = 20.0
|
25
25
|
# end
|
26
26
|
#
|
27
27
|
# To apply the above configuration only to a new client:
|
28
28
|
#
|
29
29
|
# client = <%= service.client_name_full %>.new do |config|
|
30
|
-
# config.timeout =
|
31
|
-
# config.rpcs.<%= method_service.methods.first.name %>.timeout =
|
30
|
+
# config.timeout = 10.0
|
31
|
+
# config.rpcs.<%= method_service.methods.first.name %>.timeout = 20.0
|
32
32
|
# end
|
33
33
|
#
|
34
34
|
<%- end -%>
|
35
35
|
# @!attribute [rw] endpoint
|
36
36
|
# The hostname or hostname:port of the service endpoint.
|
37
37
|
# Defaults to `<%= service.client_endpoint.inspect %>`.
|
38
|
-
# @return [String]
|
38
|
+
# @return [::String]
|
39
39
|
# @!attribute [rw] credentials
|
40
40
|
# Credentials to send with calls. You may provide any of the following types:
|
41
41
|
# * (`String`) The path to a service account key file in JSON format
|
@@ -47,29 +47,29 @@
|
|
47
47
|
# * (`GRPC::Core::Channel`) a gRPC channel with included credentials
|
48
48
|
# * (`GRPC::Core::ChannelCredentials`) a gRPC credentails object
|
49
49
|
# * (`nil`) indicating no credentials
|
50
|
-
# @return [Object]
|
50
|
+
# @return [::Object]
|
51
51
|
# @!attribute [rw] scope
|
52
52
|
# The OAuth scopes
|
53
|
-
# @return [Array
|
53
|
+
# @return [::Array<::String>]
|
54
54
|
# @!attribute [rw] lib_name
|
55
55
|
# The library name as recorded in instrumentation and logging
|
56
|
-
# @return [String]
|
56
|
+
# @return [::String]
|
57
57
|
# @!attribute [rw] lib_version
|
58
58
|
# The library version as recorded in instrumentation and logging
|
59
|
-
# @return [String]
|
59
|
+
# @return [::String]
|
60
60
|
# @!attribute [rw] channel_args
|
61
61
|
# Extra parameters passed to the gRPC channel. Note: this is ignored if a
|
62
62
|
# `GRPC::Core::Channel` object is provided as the credential.
|
63
|
-
# @return [Hash]
|
63
|
+
# @return [::Hash]
|
64
64
|
# @!attribute [rw] interceptors
|
65
65
|
# An array of interceptors that are run before calls are executed.
|
66
|
-
# @return [Array
|
66
|
+
# @return [::Array<::GRPC::ClientInterceptor>]
|
67
67
|
# @!attribute [rw] timeout
|
68
|
-
# The call timeout in
|
69
|
-
# @return [Numeric]
|
68
|
+
# The call timeout in seconds.
|
69
|
+
# @return [::Numeric]
|
70
70
|
# @!attribute [rw] metadata
|
71
71
|
# Additional gRPC headers to be sent with the call.
|
72
|
-
# @return [Hash{Symbol
|
72
|
+
# @return [::Hash{::Symbol=>::String}]
|
73
73
|
# @!attribute [rw] retry_policy
|
74
74
|
# The retry policy. The value is a hash with the following keys:
|
75
75
|
# * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
|
@@ -77,25 +77,29 @@
|
|
77
77
|
# * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
|
78
78
|
# * `:retry_codes` (*type:* `Array<String>`) - The error codes that should
|
79
79
|
# trigger a retry.
|
80
|
-
# @return [Hash]
|
80
|
+
# @return [::Hash]
|
81
|
+
# @!attribute [rw] quota_project
|
82
|
+
# A separate project against which to charge quota.
|
83
|
+
# @return [::String]
|
81
84
|
#
|
82
85
|
class Configuration
|
83
|
-
extend Gapic::Config
|
86
|
+
extend ::Gapic::Config
|
84
87
|
|
85
|
-
config_attr :endpoint,
|
86
|
-
config_attr :credentials,
|
88
|
+
config_attr :endpoint, <%= service.client_endpoint.inspect %>, ::String
|
89
|
+
config_attr :credentials, nil do |value|
|
87
90
|
allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
|
88
91
|
allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
|
89
92
|
allowed.any? { |klass| klass === value }
|
90
93
|
end
|
91
|
-
config_attr :scope,
|
92
|
-
config_attr :lib_name,
|
93
|
-
config_attr :lib_version,
|
94
|
-
config_attr(:channel_args,
|
95
|
-
config_attr :interceptors,
|
96
|
-
config_attr :timeout,
|
97
|
-
config_attr :metadata,
|
98
|
-
config_attr :retry_policy,
|
94
|
+
config_attr :scope, nil, ::String, ::Array, nil
|
95
|
+
config_attr :lib_name, nil, ::String, nil
|
96
|
+
config_attr :lib_version, nil, ::String, nil
|
97
|
+
config_attr(:channel_args, <%= service.config_channel_args.inspect %>, ::Hash, nil)
|
98
|
+
config_attr :interceptors, nil, ::Array, nil
|
99
|
+
config_attr :timeout, nil, ::Numeric, nil
|
100
|
+
config_attr :metadata, nil, ::Hash, nil
|
101
|
+
config_attr :retry_policy, nil, ::Hash, ::Proc, nil
|
102
|
+
config_attr :quota_project, nil, ::String, nil
|
99
103
|
|
100
104
|
# @private
|
101
105
|
def initialize parent_config = nil
|
@@ -111,7 +115,7 @@ class Configuration
|
|
111
115
|
def rpcs
|
112
116
|
@rpcs ||= begin
|
113
117
|
parent_rpcs = nil
|
114
|
-
parent_rpcs = @parent_config.rpcs if @parent_config&.respond_to?
|
118
|
+
parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config&.respond_to?(:rpcs)
|
115
119
|
Rpcs.new parent_rpcs
|
116
120
|
end
|
117
121
|
end
|
@@ -137,7 +141,7 @@ class Configuration
|
|
137
141
|
<%- method_service.methods.each do |method| -%>
|
138
142
|
##
|
139
143
|
# RPC-specific configuration for `<%= method.name %>`
|
140
|
-
# @return [Gapic::Config::Method]
|
144
|
+
# @return [::Gapic::Config::Method]
|
141
145
|
#
|
142
146
|
attr_reader :<%= method.name %>
|
143
147
|
<%- end -%>
|
@@ -146,7 +150,7 @@ class Configuration
|
|
146
150
|
def initialize parent_rpcs = nil
|
147
151
|
<%- method_service.methods.each do |method| -%>
|
148
152
|
<%= method.name %>_config = parent_rpcs&.<%= method.name %> if parent_rpcs&.respond_to? :<%= method.name %>
|
149
|
-
@<%= method.name %> = Gapic::Config::Method.new <%= method.name %>_config
|
153
|
+
@<%= method.name %> = ::Gapic::Config::Method.new <%= method.name %>_config
|
150
154
|
<%- end -%>
|
151
155
|
|
152
156
|
yield self if block_given?
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require "googleauth"
|
4
4
|
<% end %>
|
5
5
|
# Credentials for the <%= service.name %> API.
|
6
|
-
class <%= service.credentials_name %> < Google::Auth::Credentials
|
6
|
+
class <%= service.credentials_name %> < ::Google::Auth::Credentials
|
7
7
|
<%- if service.client_scopes.any? -%>
|
8
8
|
self.scope = [
|
9
9
|
<%- service.client_scopes.each_with_index do |client_scope, index| -%>
|
@@ -64,8 +64,10 @@ class <%= service.operations_name %>
|
|
64
64
|
if credentials.is_a?(String) || credentials.is_a?(Hash)
|
65
65
|
credentials = Credentials.new credentials, scope: @config.scope
|
66
66
|
end
|
67
|
+
@quota_project_id = @config.quota_project
|
68
|
+
@quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
|
67
69
|
|
68
|
-
@<%= service.lro_service.stub_name %> = Gapic::ServiceStub.new(
|
70
|
+
@<%= service.lro_service.stub_name %> = ::Gapic::ServiceStub.new(
|
69
71
|
<%= service.lro_service.proto_service_stub_name_full %>,
|
70
72
|
credentials: credentials,
|
71
73
|
endpoint: @config.endpoint,
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
2
|
# Converts hash and nil to an options object
|
3
|
-
options = Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
|
3
|
+
options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h
|
4
4
|
|
5
5
|
# Customize the options with defaults
|
6
6
|
metadata = @config.rpcs.<%= method.name %>.metadata.to_h
|
7
7
|
|
8
8
|
# Set x-goog-api-client and x-goog-user-project headers
|
9
|
-
metadata[:"x-goog-api-client"] ||= Gapic::Headers.x_goog_api_client \
|
9
|
+
metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
|
10
10
|
lib_name: @config.lib_name, lib_version: @config.lib_version,
|
11
11
|
gapic_version: ::<%= method.service.gem.version_name_full %>
|
12
12
|
metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
|
@@ -1,4 +1,4 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
|
-
raise ArgumentError, "request must be provided" if request.nil?
|
2
|
+
raise ::ArgumentError, "request must be provided" if request.nil?
|
3
3
|
|
4
|
-
request = Gapic::Protobuf.coerce request, to: <%= method.request_type %>
|
4
|
+
request = ::Gapic::Protobuf.coerce request, to: <%= method.request_type %>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
|
-
unless request.is_a? Enumerable
|
3
|
-
raise ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum
|
2
|
+
unless request.is_a? ::Enumerable
|
3
|
+
raise ::ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum
|
4
4
|
request = request.to_enum
|
5
5
|
end
|
6
6
|
|
7
7
|
request = request.lazy.map do |req|
|
8
|
-
Gapic::Protobuf.coerce req, to: <%= method.request_type %>
|
8
|
+
::Gapic::Protobuf.coerce req, to: <%= method.request_type %>
|
9
9
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
2
|
@<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
|
3
3
|
<%- if method.lro? -%>
|
4
|
-
response = Gapic::Operation.new response, <%= method.service.lro_client_ivar %>, options: options
|
4
|
+
response = ::Gapic::Operation.new response, <%= method.service.lro_client_ivar %>, options: options
|
5
5
|
<%- end -%>
|
6
6
|
yield response, operation if block_given?
|
7
7
|
return response
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
2
|
@<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |response, operation|
|
3
3
|
<%- if method.lro? -%>
|
4
|
-
wrap_lro_operation = ->(op_response) { Gapic::Operation.new op_response, <%= method.service.lro_client_ivar %> }
|
4
|
+
wrap_lro_operation = ->(op_response) { ::Gapic::Operation.new op_response, <%= method.service.lro_client_ivar %> }
|
5
5
|
<%- end -%>
|
6
|
-
response = Gapic::PagedEnumerable.new @<%= method.service.stub_name %>, :<%= method.name %>, request, response, operation, options<%- if method.lro? -%>, format_resource: wrap_lro_operation<%- end -%>
|
6
|
+
response = ::Gapic::PagedEnumerable.new @<%= method.service.stub_name %>, :<%= method.name %>, request, response, operation, options<%- if method.lro? -%>, format_resource: wrap_lro_operation<%- end -%>
|
7
7
|
yield response, operation if block_given?
|
8
8
|
return response
|
9
9
|
end
|
@@ -1,2 +1,2 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
|
-
# @raise [GRPC::BadStatus] if the RPC is aborted.
|
2
|
+
# @raise [::GRPC::BadStatus] if the RPC is aborted.
|
@@ -3,10 +3,10 @@
|
|
3
3
|
# Pass arguments to `<%= method.name %>` via a request object, either of type
|
4
4
|
# {<%= method.request_type %>} or an equivalent Hash.
|
5
5
|
#
|
6
|
-
# @param request [<%= method.request_type %>, Hash]
|
6
|
+
# @param request [<%= method.request_type %>, ::Hash]
|
7
7
|
# A request object representing the call parameters. Required. To specify no
|
8
8
|
# parameters, or to keep all the default parameter values, pass an empty Hash.
|
9
|
-
# @param options [Gapic::CallOptions, Hash]
|
9
|
+
# @param options [::Gapic::CallOptions, ::Hash]
|
10
10
|
# Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
|
11
11
|
<%-if method.arguments.any?-%>
|
12
12
|
#
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
|
-
# @param request [Gapic::StreamInput, Enumerable<<%= method.request_type %>, Hash>]
|
2
|
+
# @param request [::Gapic::StreamInput, ::Enumerable<<%= method.request_type %>, ::Hash>]
|
3
3
|
# An enumerable of {<%= method.request_type %>} instances.
|
4
|
-
# @param options [Gapic::CallOptions, Hash]
|
4
|
+
# @param options [::Gapic::CallOptions, ::Hash]
|
5
5
|
# Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%- assert_locals method -%>
|
2
2
|
# @yield [response, operation] Access the result along with the RPC operation
|
3
3
|
# @yieldparam response [<%= method.doc_response_type %>]
|
4
|
-
# @yieldparam operation [GRPC::ActiveCall::Operation]
|
4
|
+
# @yieldparam operation [::GRPC::ActiveCall::Operation]
|
5
5
|
#
|
6
6
|
# @return [<%= method.doc_response_type %>]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%- assert_locals pattern -%>
|
2
2
|
<%- pattern.arguments[0...-1].each do |arg| -%>
|
3
|
-
raise ArgumentError, "<%= arg %> cannot contain /" if <%= arg %>.to_s.include? "/"
|
3
|
+
raise ::ArgumentError, "<%= arg %> cannot contain /" if <%= arg %>.to_s.include? "/"
|
4
4
|
<%- end -%>
|
5
5
|
|
6
6
|
"<%= pattern.path_string %>"
|
@@ -3,26 +3,23 @@
|
|
3
3
|
# Create a fully-qualified <%= resource.name %> resource string.
|
4
4
|
#
|
5
5
|
<%- resource.patterns.each do |pattern| -%>
|
6
|
-
|
7
|
-
# @overload <%= resource.path_helper %>(<%= args_doc_sig %>)
|
6
|
+
# @overload <%= resource.path_helper %>(<%= pattern.formal_arguments %>)
|
8
7
|
<%= indent render(partial: "service/client/resource/doc", locals: { pattern: pattern }), "# " %>
|
9
8
|
#
|
10
9
|
<%- end -%>
|
11
|
-
# @return [String]
|
10
|
+
# @return [::String]
|
12
11
|
def <%= resource.path_helper %> **args
|
13
12
|
resources = {
|
14
13
|
<%- last_pattern_index = resource.patterns.count - 1 -%>
|
15
14
|
<%- resource.patterns.each_with_index do |pattern, index| -%>
|
16
15
|
<%- comma = last_pattern_index == index ? "" : "," -%>
|
17
|
-
|
18
|
-
<%- args_sig = pattern.arguments.map { |arg| "#{arg}:" }.join ", " -%>
|
19
|
-
<%= args_key %> => (proc do |<%= args_sig %>|
|
16
|
+
<%= pattern.arguments_key.inspect %> => (proc do |<%= pattern.formal_arguments %>|
|
20
17
|
<%= indent render(partial: "service/client/resource/def", locals: { pattern: pattern }), 6 %>
|
21
18
|
end)<%= comma %>
|
22
19
|
<%- end -%>
|
23
20
|
}
|
24
21
|
|
25
22
|
resource = resources[args.keys.sort.join(":")]
|
26
|
-
raise ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
|
23
|
+
raise ::ArgumentError, "no resource found for values #{args.keys}" if resource.nil?
|
27
24
|
resource.call(**args)
|
28
25
|
end
|
@@ -4,8 +4,7 @@
|
|
4
4
|
#
|
5
5
|
<%= indent render(partial: "service/client/resource/doc", locals: { pattern: resource.patterns.first }), "# " %>
|
6
6
|
#
|
7
|
-
# @return [String]
|
8
|
-
|
9
|
-
def <%= resource.path_helper %> <%= args %>
|
7
|
+
# @return [::String]
|
8
|
+
def <%= resource.path_helper %> <%= resource.patterns.first.formal_arguments %>
|
10
9
|
<%= indent render(partial: "service/client/resource/def", locals: { pattern: resource.patterns.first }), 2 %>
|
11
10
|
end
|