gapic-generator 0.10.1 → 0.11.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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -0
  3. data/lib/gapic/generator/version.rb +1 -1
  4. data/lib/gapic/generators/default_generator.rb +2 -0
  5. data/lib/gapic/generators/default_generator_parameters.rb +3 -1
  6. data/lib/gapic/grpc_service_config/{service_config.rb → config.rb} +2 -2
  7. data/lib/gapic/grpc_service_config/parser.rb +8 -8
  8. data/lib/gapic/model/method/http_annotation.rb +123 -0
  9. data/lib/gapic/model/method/lro.rb +160 -0
  10. data/lib/gapic/model/method/routing.rb +263 -0
  11. data/lib/gapic/model/mixins.rb +181 -0
  12. data/lib/gapic/model/model_error.rb +26 -0
  13. data/lib/gapic/model/service/nonstandard_lro_provider.rb +293 -0
  14. data/lib/gapic/model.rb +22 -0
  15. data/lib/gapic/path_pattern/pattern.rb +46 -0
  16. data/lib/gapic/path_pattern/segment.rb +97 -9
  17. data/lib/gapic/presenters/gem_presenter.rb +34 -2
  18. data/lib/gapic/presenters/{service_config_presenter.rb → grpc_service_config_presenter.rb} +1 -1
  19. data/lib/gapic/presenters/method_presenter.rb +43 -3
  20. data/lib/gapic/presenters/method_rest_presenter.rb +33 -55
  21. data/lib/gapic/presenters/service/lro_client_presenter.rb +90 -0
  22. data/lib/gapic/presenters/service_presenter.rb +185 -3
  23. data/lib/gapic/presenters/service_rest_presenter.rb +81 -0
  24. data/lib/gapic/presenters/snippet_presenter.rb +1 -0
  25. data/lib/gapic/presenters.rb +3 -1
  26. data/lib/gapic/schema/api.rb +56 -2
  27. data/lib/gapic/schema/loader.rb +4 -1
  28. data/lib/gapic/schema/service_config_parser.rb +118 -0
  29. data/lib/gapic/schema/wrappers.rb +124 -1
  30. data/lib/google/api/auth.pb.rb +75 -0
  31. data/lib/google/api/backend.pb.rb +59 -0
  32. data/lib/google/api/billing.pb.rb +53 -0
  33. data/lib/google/api/context.pb.rb +47 -0
  34. data/lib/google/api/control.pb.rb +38 -0
  35. data/lib/google/api/documentation.pb.rb +56 -0
  36. data/lib/google/api/endpoint.pb.rb +42 -0
  37. data/lib/google/api/label.pb.rb +49 -0
  38. data/lib/google/api/launch_stage.pb.rb +37 -0
  39. data/lib/google/api/log.pb.rb +47 -0
  40. data/lib/google/api/logging.pb.rb +48 -0
  41. data/lib/google/api/metric.pb.rb +90 -0
  42. data/lib/google/api/monitored_resource.pb.rb +68 -0
  43. data/lib/google/api/monitoring.pb.rb +48 -0
  44. data/lib/google/api/quota.pb.rb +63 -0
  45. data/lib/google/api/routing.pb.rb +58 -0
  46. data/lib/google/api/service.pb.rb +90 -0
  47. data/lib/google/api/source_info.pb.rb +44 -0
  48. data/lib/google/api/system_parameter.pb.rb +51 -0
  49. data/lib/google/api/usage.pb.rb +47 -0
  50. data/lib/google/cloud/extended_operations.pb.rb +57 -0
  51. data/lib/google/protobuf/any.pb.rb +1 -1
  52. data/lib/google/protobuf/api.pb.rb +69 -0
  53. data/lib/google/protobuf/descriptor.pb.rb +1 -1
  54. data/lib/google/protobuf/duration.pb.rb +41 -0
  55. data/lib/google/protobuf/source_context.pb.rb +39 -0
  56. data/lib/google/protobuf/struct.pb.rb +65 -0
  57. data/lib/google/protobuf/type.pb.rb +128 -0
  58. data/lib/google/protobuf/wrappers.pb.rb +80 -0
  59. data/templates/default/gem/yardopts.erb +1 -1
  60. data/templates/default/lib/_package.erb +4 -0
  61. data/templates/default/lib/_service.erb +6 -0
  62. data/templates/default/service/client/_client.erb +20 -8
  63. data/templates/default/service/client/_nonstandard_lro.erb +57 -0
  64. data/templates/default/service/client/_self_configure_defaults.erb +2 -2
  65. data/templates/default/service/client/method/def/_options_defaults.erb +1 -8
  66. data/templates/default/service/client/method/def/_response.erb +2 -0
  67. data/templates/default/service/client/method/def/_response_nonstandard_lro.erb +23 -0
  68. data/templates/default/service/client/method/def/_routing_params.erb +36 -0
  69. data/templates/default/service/nonstandard_lro.erb +6 -0
  70. data/templates/default/service/rest/client/_client.erb +32 -5
  71. data/templates/default/service/rest/client/method/def/_response.erb +2 -2
  72. data/templates/default/service/rest/client/method/def/_response_nonstandard_lro.erb +23 -0
  73. data/templates/default/service/test/method/_assert_response.erb +3 -0
  74. metadata +61 -7
  75. data/templates/default/service/rest/client/method/def/_response_lro.erb +0 -7
@@ -0,0 +1,80 @@
1
+ # encoding: utf-8
2
+
3
+ ##
4
+ # This file is auto-generated. DO NOT EDIT!
5
+ #
6
+ require 'protobuf'
7
+
8
+ module Google
9
+ module Protobuf
10
+ ::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
11
+
12
+ ##
13
+ # Message Classes
14
+ #
15
+ class DoubleValue < ::Protobuf::Message; end
16
+ class FloatValue < ::Protobuf::Message; end
17
+ class Int64Value < ::Protobuf::Message; end
18
+ class UInt64Value < ::Protobuf::Message; end
19
+ class Int32Value < ::Protobuf::Message; end
20
+ class UInt32Value < ::Protobuf::Message; end
21
+ class BoolValue < ::Protobuf::Message; end
22
+ class StringValue < ::Protobuf::Message; end
23
+ class BytesValue < ::Protobuf::Message; end
24
+
25
+
26
+ ##
27
+ # File Options
28
+ #
29
+ set_option :java_package, "com.google.protobuf"
30
+ set_option :java_outer_classname, "WrappersProto"
31
+ set_option :java_multiple_files, true
32
+ set_option :go_package, "github.com/golang/protobuf/ptypes/wrappers"
33
+ set_option :cc_enable_arenas, true
34
+ set_option :objc_class_prefix, "GPB"
35
+ set_option :csharp_namespace, "Google.Protobuf.WellKnownTypes"
36
+
37
+
38
+ ##
39
+ # Message Fields
40
+ #
41
+ class DoubleValue
42
+ optional :double, :value, 1
43
+ end
44
+
45
+ class FloatValue
46
+ optional :float, :value, 1
47
+ end
48
+
49
+ class Int64Value
50
+ optional :int64, :value, 1
51
+ end
52
+
53
+ class UInt64Value
54
+ optional :uint64, :value, 1
55
+ end
56
+
57
+ class Int32Value
58
+ optional :int32, :value, 1
59
+ end
60
+
61
+ class UInt32Value
62
+ optional :uint32, :value, 1
63
+ end
64
+
65
+ class BoolValue
66
+ optional :bool, :value, 1
67
+ end
68
+
69
+ class StringValue
70
+ optional :string, :value, 1
71
+ end
72
+
73
+ class BytesValue
74
+ optional :bytes, :value, 1
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+
@@ -1,6 +1,6 @@
1
1
  <%- assert_locals gem -%>
2
2
  --no-private
3
- --title=<%= gem.title %>
3
+ --title="<%= gem.title %>"
4
4
  --exclude _pb\.rb$
5
5
  --markup markdown
6
6
  --markup-provider redcarpet
@@ -10,6 +10,8 @@ require "<%= package.gem.version_require %>"
10
10
  ##
11
11
  # To load this package, including all its services, and instantiate a <%= package.grpc_client_designation %>:
12
12
  #
13
+ # @example
14
+ #
13
15
  # require "<%= package.package_require %>"
14
16
  # client = <%= package.services.first.create_client_call %>
15
17
  #
@@ -18,6 +20,8 @@ require "<%= package.gem.version_require %>"
18
20
  ##
19
21
  # To load this package, including all its services, and instantiate a REST client:
20
22
  #
23
+ # @example
24
+ #
21
25
  # require "<%= package.package_require %>"
22
26
  # client = <%= package.services.first.rest.create_client_call %>
23
27
  #
@@ -13,6 +13,9 @@ require "<%= service.credentials_require %>"
13
13
  <%- if service.paths? -%>
14
14
  require "<%= service.paths_require %>"
15
15
  <%- end -%>
16
+ <%- if service.nonstandard_lro_provider? -%>
17
+ require "<%= service.rest.nonstandard_lro_require %>"
18
+ <%- end -%>
16
19
  require "<%= service.rest.service_rest_require %>"
17
20
  <% end %>
18
21
  <%- else -%>
@@ -32,6 +35,9 @@ require "<%= service.paths_require %>"
32
35
  <%- if service.lro? -%>
33
36
  require "<%= service.operations_require %>"
34
37
  <%- end -%>
38
+ <%- if service.nonstandard_lro_provider? -%>
39
+ require "<%= service.nonstandard_lro_require %>"
40
+ <%- end -%>
35
41
  require "<%= service.client_require %>"
36
42
  <% end %>
37
43
  ##
@@ -2,6 +2,13 @@
2
2
  <% @requires = capture do %>
3
3
  <%= render partial: "service/client/requires", locals: { service: service} -%>
4
4
  require "<%= service.proto_service_require %>"
5
+ <%- if service.subclients? -%>
6
+ <%- service.subclients.each do |subclient| -%>
7
+ <%- unless subclient.client_class_name == "Operations" -%>
8
+ require "<%= subclient.require_str %>"
9
+ <%- end -%>
10
+ <%- end -%>
11
+ <%- end -%>
5
12
  <% end %>
6
13
  ##
7
14
  # Client for the <%= service.name %> service.
@@ -109,12 +116,15 @@ class <%= service.client_name %>
109
116
  @quota_project_id = @config.quota_project
110
117
  @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
111
118
 
112
- <%- if service.lro? -%>
113
- <%= service.lro_client_ivar %> = <%= service.operations_name %>.new do |config|
119
+ <%- if service.subclients? -%>
120
+ <%- service.subclients.each do |subclient| -%>
121
+ @<%= subclient.client_var_name %> = <%= subclient.client_class_name %>.new do |config|
114
122
  config.credentials = credentials
123
+ config.quota_project = @quota_project_id
115
124
  config.endpoint = @config.endpoint
116
125
  end
117
126
 
127
+ <%- end -%>
118
128
  <%- end -%>
119
129
  @<%= service.stub_name %> = ::Gapic::ServiceStub.new(
120
130
  <%= service.proto_service_stub_name_full %>,
@@ -125,20 +135,22 @@ class <%= service.client_name %>
125
135
  )
126
136
  end
127
137
 
128
- <%- if service.lro? -%>
138
+ <%- if service.subclients? -%>
139
+ <%- service.subclients.each do |subclient| -%>
129
140
  ##
130
- # Get the associated client for long-running operations.
141
+ # Get the associated client for <%= subclient.service_description %>.
131
142
  #
132
- # @return [<%= service.operations_name_full %>]
143
+ # @return [<%= subclient.client_class_docname %>]
133
144
  #
134
- attr_reader :<%= service.lro_client_var %>
145
+ attr_reader :<%= subclient.client_var_name %>
135
146
 
136
- <%- end -%>
147
+ <%- end -%>
148
+ <%- end -%>
137
149
  # Service calls
138
150
  <%- service.methods.each do |method| -%>
139
151
 
140
152
  <%= indent_tail render(partial: "service/client/method/def", locals: { method: method }), 2 %>
141
- <%- end %>
153
+ <%- end -%>
142
154
 
143
155
  <%= indent_tail render(partial: "service/client/config", locals: { service: service }), 2 %>
144
156
  end
@@ -0,0 +1,57 @@
1
+ <%- assert_locals service -%>
2
+ <% @requires = capture do %>
3
+ require "gapic/operation/retry_policy"
4
+ require "gapic/generic_lro/operation"
5
+ <% end %>
6
+
7
+ # A module containing nonstandard lro helpers
8
+ module <%= service.nonstandard_lro_name %>
9
+ class << self
10
+ ##
11
+ # Creates a Generic LRO operation object that wraps the nonstandard
12
+ # long-running operation specific to this service.
13
+ #
14
+ # @param operation [Object] The long-running operation object that is returned by the initial method call.
15
+ #
16
+ # @param client [<%= service.usable_service_presenter.client_name_full %>] The client that handles the polling for the longrunning operation.
17
+ #
18
+ # @param request_values [Map<String, String>] The values that are to be copied from the request that
19
+ # triggered the longrunning operation, into the request that polls for the longrunning operation.
20
+ # The format is `name of the request field -> value`
21
+ #
22
+ # @param options [Gapic::CallOptions] call options for this operation
23
+ #
24
+ # @return [Gapic::GenericLRO::Operation]
25
+ #
26
+ def create_operation operation:, client:, request_values:, options:
27
+ Gapic::GenericLRO::Operation.new(operation,
28
+ client: client,
29
+ polling_method_name: "<%= service.nonstandard_lro_polling_method_name %>",
30
+ request_values: request_values,
31
+ operation_status_field: "<%= service.nonstandard_lro.operation_status_field %>",
32
+ <%- if service.nonstandard_lro.operation_name_field -%>
33
+ operation_name_field: "<%= service.nonstandard_lro.operation_name_field %>",
34
+ <%- end -%>
35
+ <%- if service.nonstandard_lro.operation_err_code_field -%>
36
+ operation_err_code_field: "<%= service.nonstandard_lro.operation_err_code_field %>",
37
+ <%- end -%>
38
+ <%- if service.nonstandard_lro.operation_err_msg_field -%>
39
+ operation_err_msg_field: "<%= service.nonstandard_lro.operation_err_msg_field %>",
40
+ <%- end -%>
41
+ <%- if service.nonstandard_lro.operation_response_fields.any? -%>
42
+ operation_copy_fields: {
43
+ <%- service.nonstandard_lro.operation_response_fields.each_with_index do |(field_from, field_to), i| -%>
44
+ <%- if i == service.nonstandard_lro.operation_response_fields.length - 1 -%>
45
+ "<%= field_to %>" => "<%= field_from %>"
46
+ <%- else -%>
47
+ "<%= field_to %>" => "<%= field_from %>",
48
+ <%- end -%>
49
+ <%- end -%>
50
+ },
51
+ <%- else -%>
52
+ operation_copy_fields: {},
53
+ <%- end -%>
54
+ options: options)
55
+ end
56
+ end
57
+ end
@@ -6,7 +6,7 @@
6
6
  default_config.timeout = <%= format_number service.grpc_service_config.timeout_seconds %>
7
7
  <%- end -%>
8
8
  <%- if service.grpc_service_config.retry_policy -%>
9
- default_config.retry_policy = <%= indent_tail service.service_config_presenter.retry_policy_fields, 2 %>
9
+ default_config.retry_policy = <%= indent_tail service.grpc_service_config_presenter.retry_policy_fields, 2 %>
10
10
  <%- end -%>
11
11
  <%- end -%>
12
12
  <%- method_service.methods.each do |method| -%>
@@ -16,7 +16,7 @@
16
16
  default_config.rpcs.<%= method.name %>.timeout = <%= format_number method.grpc_service_config.timeout_seconds %>
17
17
  <%- end -%>
18
18
  <%- if method.grpc_service_config.retry_policy -%>
19
- default_config.rpcs.<%= method.name %>.retry_policy =<%= indent_tail method.service_config_presenter.retry_policy_fields, 2 %>
19
+ default_config.rpcs.<%= method.name %>.retry_policy =<%= indent_tail method.grpc_service_config_presenter.retry_policy_fields, 2 %>
20
20
  <%- end -%>
21
21
  <%- end -%>
22
22
  <%- end -%>
@@ -12,14 +12,7 @@ metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \
12
12
  metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id
13
13
  <%- if method.routing_params? && !method.client_streaming? -%>
14
14
 
15
- header_params = {
16
- <%- method.routing_params.each_with_index do |routing_param, index| -%>
17
- <%- comma = index == method.routing_params.count - 1 ? "" : "," -%>
18
- "<%= routing_param %>" => request.<%= routing_param %><%= comma %>
19
- <%- end -%>
20
- }
21
- request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
22
- metadata[:"x-goog-request-params"] ||= request_params_header
15
+ <%= render partial: "service/client/method/def/routing_params", locals: { method: method } -%>
23
16
  <%- end -%>
24
17
 
25
18
  options.apply_defaults timeout: @config.rpcs.<%= method.name %>.timeout,
@@ -1,6 +1,8 @@
1
1
  <%- assert_locals method -%>
2
2
  <%- if method.paged? -%>
3
3
  <%= render partial: "service/client/method/def/response_paged", locals: { method: method } -%>
4
+ <%- elsif method.rest.nonstandard_lro? -%>
5
+ <%= render partial: "service/client/method/def/response_nonstandard_lro", locals: { method: method } -%>
4
6
  <%- else -%>
5
7
  <%= render partial: "service/client/method/def/response_normal", locals: { method: method } -%>
6
8
  <%- end -%>
@@ -0,0 +1,23 @@
1
+ <%- assert_locals method -%>
2
+ @<%= method.service.stub_name %>.call_rpc :<%= method.name %>, request, options: options do |result, response|
3
+ result = <%= method.nonstandard_lro_client.helper_type %>.create_operation(
4
+ operation: result,
5
+ client: <%= method.nonstandard_lro_client.client_var_name %>,
6
+ <%- if method.lro.operation_request_fields.any? -%>
7
+ request_values: {
8
+ <%- method.lro.operation_request_fields.each_with_index do |(field_from, field_to), i| -%>
9
+ <%- if i == method.lro.operation_request_fields.length - 1 -%>
10
+ "<%= field_to %>" => request.<%= field_from %>
11
+ <%- else -%>
12
+ "<%= field_to %>" => request.<%= field_from %>,
13
+ <%- end -%>
14
+ <%- end -%>
15
+ },
16
+ <%- else -%>
17
+ request_values: {},
18
+ <%- end -%>
19
+ options: options
20
+ )
21
+ yield result, response if block_given?
22
+ return result
23
+ end
@@ -0,0 +1,36 @@
1
+ <%- assert_locals method -%>
2
+ header_params = {}
3
+ <%- if method.routing.explicit_params? -%>
4
+ <%- method.routing.explicit_params.each do |key_name, routing_infos| -%>
5
+ <%- routing_infos.each do |routing_info| -%>
6
+ <%- if routing_info.pattern_matching_not_needed? -%>
7
+ if request.<%= routing_info.field.gsub(".", "&.") %> && !request.<%= routing_info.field %>.empty?
8
+ header_params["<%= key_name %>"] = request.<%= routing_info.field %>
9
+ end
10
+ <%- elsif routing_info.value_is_full_field? -%>
11
+ if request.<%= routing_info.field.gsub(".", "&.") %> &&
12
+ %r{<%= routing_info.field_regex_str %>}.match?(request.<%= routing_info.field %>)
13
+ header_params["<%= key_name %>"] = request.<%= routing_info.field %>
14
+ end
15
+ <%- else -%>
16
+ if request.<%= routing_info.field.gsub(".", "&.") %>
17
+ regex_match = %r{<%= routing_info.field_full_regex_str %>}.match request.<%= routing_info.field %>
18
+ if regex_match
19
+ header_params["<%= key_name %>"] = regex_match["<%= key_name %>".to_s]
20
+ end
21
+ end
22
+ <%- end -%>
23
+ <%- end -%>
24
+ <%- end -%>
25
+
26
+ request_params_header = URI.encode_www_form header_params
27
+ <%- else -%>
28
+ <%- method.routing_params.each_with_index do |routing_param, index| -%>
29
+ if request.<%= routing_param.gsub(".", "&.") %>
30
+ header_params["<%= routing_param %>"] = request.<%= routing_param %>
31
+ end
32
+ <%- end -%>
33
+
34
+ request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&")
35
+ <%- end -%>
36
+ metadata[:"x-goog-request-params"] ||= request_params_header
@@ -0,0 +1,6 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "service/client/nonstandard_lro",
3
+ layout: "layouts/ruby",
4
+ locals: { service: service,
5
+ namespace: service.methods_rest_bindings? ? service.rest.service_name_full : service.service_name_full }
6
+ %>
@@ -1,8 +1,15 @@
1
1
  <%- assert_locals service -%>
2
2
  <% @requires = capture do %>
3
- <%= render partial: "service/client/requires", locals: { service: service} -%>
4
- require "<%= service.proto_service_require %>"
5
- require "<%= service.rest.service_stub_require %>"
3
+ <%= render partial: "service/client/requires", locals: { service: service} -%>
4
+ require "<%= service.proto_service_require %>"
5
+ require "<%= service.rest.service_stub_require %>"
6
+ <%- if service.subclients? -%>
7
+ <%- service.subclients.each do |subclient| -%>
8
+ <%- unless subclient.client_class_name == "Operations" -%>
9
+ require "<%= subclient.require_str %>"
10
+ <%- end -%>
11
+ <%- end -%>
12
+ <%- end -%>
6
13
  <% end %>
7
14
  ##
8
15
  # REST client for the <%= service.name %> service.
@@ -14,8 +21,8 @@
14
21
  class <%= service.rest.client_name %>
15
22
  <%- if service.paths? -%>
16
23
  include <%= service.paths_name %>
17
- <%- end -%>
18
24
 
25
+ <%- end -%>
19
26
  # @private
20
27
  attr_reader :<%= service.stub_name %>
21
28
 
@@ -93,14 +100,34 @@ class <%= service.rest.client_name %>
93
100
  end
94
101
  <%- end -%>
95
102
 
103
+ <%- if service.subclients? -%>
104
+ <%- service.subclients.each do |subclient| -%>
105
+ @<%= subclient.client_var_name %> = <%= subclient.client_class_name %>.new do |config|
106
+ config.credentials = credentials
107
+ config.endpoint = @config.endpoint
108
+ end
109
+
110
+ <%- end -%>
111
+ <%- end -%>
96
112
  @<%= service.stub_name %> = <%= service.rest.service_stub_name_full %>.new endpoint: @config.endpoint, credentials: credentials
97
113
  end
98
114
 
115
+ <%- if service.subclients? -%>
116
+ <%- service.subclients.each do |subclient| -%>
117
+ ##
118
+ # Get the associated client for <%= subclient.service_description %>.
119
+ #
120
+ # @return [<%= subclient.client_class_docname %>]
121
+ #
122
+ attr_reader :<%= subclient.client_var_name %>
123
+
124
+ <%- end -%>
125
+ <%- end -%>
99
126
  # Service calls
100
127
  <%- service.methods.each do |method| -%>
101
128
 
102
129
  <%= indent_tail render(partial: "service/rest/client/method/def", locals: { method: method }), 2 %>
103
- <%- end %>
130
+ <%- end -%>
104
131
 
105
132
  <%= indent_tail render(partial: "service/rest/client/config", locals: { service: service }), 2 %>
106
133
  end
@@ -1,8 +1,8 @@
1
1
  <%- assert_locals method -%>
2
2
  <%- if method.rest.paged? -%>
3
3
  <%= render partial: "service/rest/client/method/def/response_paged", locals: { method: method } -%>
4
- <%- elsif method.rest.lro? -%>
5
- <%= render partial: "service/rest/client/method/def/response_lro", locals: { method: method } -%>
4
+ <%- elsif method.rest.nonstandard_lro? -%>
5
+ <%= render partial: "service/rest/client/method/def/response_nonstandard_lro", locals: { method: method } -%>
6
6
  <%- else -%>
7
7
  <%= render partial: "service/rest/client/method/def/response_normal", locals: { method: method } -%>
8
8
  <%- end -%>
@@ -0,0 +1,23 @@
1
+ <%- assert_locals method -%>
2
+ @<%= method.service.stub_name %>.<%= method.name %> request, options do |result, response|
3
+ result = <%= method.nonstandard_lro_client.helper_type %>.create_operation(
4
+ operation: result,
5
+ client: <%= method.nonstandard_lro_client.client_var_name %>,
6
+ <%- if method.lro.operation_request_fields.any? -%>
7
+ request_values: {
8
+ <%- method.lro.operation_request_fields.each_with_index do |(field_from, field_to), i| -%>
9
+ <%- if i == method.lro.operation_request_fields.length - 1 -%>
10
+ "<%= field_to %>" => request.<%= field_from %>
11
+ <%- else -%>
12
+ "<%= field_to %>" => request.<%= field_from %>,
13
+ <%- end -%>
14
+ <%- end -%>
15
+ },
16
+ <%- else -%>
17
+ request_values: {},
18
+ <%- end -%>
19
+ options: options
20
+ )
21
+ yield result, response if block_given?
22
+ return result
23
+ end
@@ -5,6 +5,9 @@ assert_equal grpc_response, response.response
5
5
  <%- elsif method.lro? %>
6
6
  assert_kind_of Gapic::Operation, response
7
7
  assert_equal grpc_response, response.grpc_op
8
+ <%- elsif method.nonstandard_lro? %>
9
+ assert_kind_of Gapic::GenericLRO::Operation, response
10
+ assert_equal grpc_response, response.operation
8
11
  <%- else -%>
9
12
  assert_equal grpc_response, response
10
13
  <%- end -%>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gapic-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernest Landrito
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-08-27 00:00:00.000000000 Z
13
+ date: 2022-02-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -60,14 +60,14 @@ dependencies:
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: 1.36.0
63
+ version: 1.41.0
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: 1.36.0
70
+ version: 1.41.0
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: minitest
73
73
  requirement: !ruby/object:Gem::Requirement
@@ -110,6 +110,20 @@ dependencies:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
112
  version: '1.0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: pry
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0.14'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0.14'
113
127
  - !ruby/object:Gem::Dependency
114
128
  name: rake
115
129
  requirement: !ruby/object:Gem::Requirement
@@ -197,13 +211,20 @@ files:
197
211
  - lib/gapic/generators/base_generator.rb
198
212
  - lib/gapic/generators/default_generator.rb
199
213
  - lib/gapic/generators/default_generator_parameters.rb
214
+ - lib/gapic/grpc_service_config/config.rb
200
215
  - lib/gapic/grpc_service_config/method_config.rb
201
216
  - lib/gapic/grpc_service_config/parser.rb
202
217
  - lib/gapic/grpc_service_config/parsing_error.rb
203
218
  - lib/gapic/grpc_service_config/retry_policy.rb
204
- - lib/gapic/grpc_service_config/service_config.rb
205
219
  - lib/gapic/helpers/filepath_helper.rb
206
220
  - lib/gapic/helpers/namespace_helper.rb
221
+ - lib/gapic/model.rb
222
+ - lib/gapic/model/method/http_annotation.rb
223
+ - lib/gapic/model/method/lro.rb
224
+ - lib/gapic/model/method/routing.rb
225
+ - lib/gapic/model/mixins.rb
226
+ - lib/gapic/model/model_error.rb
227
+ - lib/gapic/model/service/nonstandard_lro_provider.rb
207
228
  - lib/gapic/path_pattern.rb
208
229
  - lib/gapic/path_pattern/parser.rb
209
230
  - lib/gapic/path_pattern/pattern.rb
@@ -214,6 +235,7 @@ files:
214
235
  - lib/gapic/presenters/field_presenter.rb
215
236
  - lib/gapic/presenters/file_presenter.rb
216
237
  - lib/gapic/presenters/gem_presenter.rb
238
+ - lib/gapic/presenters/grpc_service_config_presenter.rb
217
239
  - lib/gapic/presenters/message_presenter.rb
218
240
  - lib/gapic/presenters/method/rest_pagination_info.rb
219
241
  - lib/gapic/presenters/method_presenter.rb
@@ -221,7 +243,7 @@ files:
221
243
  - lib/gapic/presenters/package_presenter.rb
222
244
  - lib/gapic/presenters/resource_presenter.rb
223
245
  - lib/gapic/presenters/sample_presenter.rb
224
- - lib/gapic/presenters/service_config_presenter.rb
246
+ - lib/gapic/presenters/service/lro_client_presenter.rb
225
247
  - lib/gapic/presenters/service_presenter.rb
226
248
  - lib/gapic/presenters/service_rest_presenter.rb
227
249
  - lib/gapic/presenters/snippet_presenter.rb
@@ -234,19 +256,47 @@ files:
234
256
  - lib/gapic/schema/parameter_schema.rb
235
257
  - lib/gapic/schema/request_param_parser.rb
236
258
  - lib/gapic/schema/request_parameter.rb
259
+ - lib/gapic/schema/service_config_parser.rb
237
260
  - lib/gapic/schema/wrappers.rb
238
261
  - lib/gapic/uri_template.rb
239
262
  - lib/gapic/uri_template/parser.rb
240
263
  - lib/google/api/annotations.pb.rb
264
+ - lib/google/api/auth.pb.rb
265
+ - lib/google/api/backend.pb.rb
266
+ - lib/google/api/billing.pb.rb
241
267
  - lib/google/api/client.pb.rb
268
+ - lib/google/api/context.pb.rb
269
+ - lib/google/api/control.pb.rb
270
+ - lib/google/api/documentation.pb.rb
271
+ - lib/google/api/endpoint.pb.rb
242
272
  - lib/google/api/field_behavior.pb.rb
243
273
  - lib/google/api/http.pb.rb
274
+ - lib/google/api/label.pb.rb
275
+ - lib/google/api/launch_stage.pb.rb
276
+ - lib/google/api/log.pb.rb
277
+ - lib/google/api/logging.pb.rb
278
+ - lib/google/api/metric.pb.rb
279
+ - lib/google/api/monitored_resource.pb.rb
280
+ - lib/google/api/monitoring.pb.rb
281
+ - lib/google/api/quota.pb.rb
244
282
  - lib/google/api/resource.pb.rb
283
+ - lib/google/api/routing.pb.rb
284
+ - lib/google/api/service.pb.rb
285
+ - lib/google/api/source_info.pb.rb
286
+ - lib/google/api/system_parameter.pb.rb
287
+ - lib/google/api/usage.pb.rb
288
+ - lib/google/cloud/extended_operations.pb.rb
245
289
  - lib/google/longrunning/operations.pb.rb
246
290
  - lib/google/protobuf/any.pb.rb
291
+ - lib/google/protobuf/api.pb.rb
247
292
  - lib/google/protobuf/compiler/plugin.pb.rb
248
293
  - lib/google/protobuf/descriptor.pb.rb
294
+ - lib/google/protobuf/duration.pb.rb
249
295
  - lib/google/protobuf/empty.pb.rb
296
+ - lib/google/protobuf/source_context.pb.rb
297
+ - lib/google/protobuf/struct.pb.rb
298
+ - lib/google/protobuf/type.pb.rb
299
+ - lib/google/protobuf/wrappers.pb.rb
250
300
  - lib/google/rpc/status.pb.rb
251
301
  - templates/default/gem/_version.erb
252
302
  - templates/default/gem/changelog.erb
@@ -281,6 +331,7 @@ files:
281
331
  - templates/default/service/client/_client.erb
282
332
  - templates/default/service/client/_config.erb
283
333
  - templates/default/service/client/_credentials.erb
334
+ - templates/default/service/client/_nonstandard_lro.erb
284
335
  - templates/default/service/client/_operations.erb
285
336
  - templates/default/service/client/_paths.erb
286
337
  - templates/default/service/client/_requires.erb
@@ -294,8 +345,10 @@ files:
294
345
  - templates/default/service/client/method/def/_request_streaming.erb
295
346
  - templates/default/service/client/method/def/_rescue.erb
296
347
  - templates/default/service/client/method/def/_response.erb
348
+ - templates/default/service/client/method/def/_response_nonstandard_lro.erb
297
349
  - templates/default/service/client/method/def/_response_normal.erb
298
350
  - templates/default/service/client/method/def/_response_paged.erb
351
+ - templates/default/service/client/method/def/_routing_params.erb
299
352
  - templates/default/service/client/method/docs/_deprecated.erb
300
353
  - templates/default/service/client/method/docs/_error.erb
301
354
  - templates/default/service/client/method/docs/_request.erb
@@ -319,6 +372,7 @@ files:
319
372
  - templates/default/service/client/resource/_multi.erb
320
373
  - templates/default/service/client/resource/_single.erb
321
374
  - templates/default/service/credentials.erb
375
+ - templates/default/service/nonstandard_lro.erb
322
376
  - templates/default/service/operations.erb
323
377
  - templates/default/service/paths.erb
324
378
  - templates/default/service/rest.erb
@@ -329,7 +383,7 @@ files:
329
383
  - templates/default/service/rest/client/method/def/_options_defaults.erb
330
384
  - templates/default/service/rest/client/method/def/_rescue.erb
331
385
  - templates/default/service/rest/client/method/def/_response.erb
332
- - templates/default/service/rest/client/method/def/_response_lro.erb
386
+ - templates/default/service/rest/client/method/def/_response_nonstandard_lro.erb
333
387
  - templates/default/service/rest/client/method/def/_response_normal.erb
334
388
  - templates/default/service/rest/client/method/def/_response_paged.erb
335
389
  - templates/default/service/rest/client/method/docs/_error.erb
@@ -1,7 +0,0 @@
1
- <%- assert_locals method -%>
2
-
3
- @<%= method.service.stub_name %>.<%= method.name %> request, options do |result, response|
4
- result = ::Gapic::Rest::BaseOperation.new result
5
- yield result, response if block_given?
6
- return result
7
- end