aws-sdk-code-generator 0.3.0.pre → 0.5.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/aws-sdk-code-generator/client_constructor.rb +2 -1
  3. data/lib/aws-sdk-code-generator/code_builder.rb +52 -0
  4. data/lib/aws-sdk-code-generator/eventstream_example.rb +34 -34
  5. data/lib/aws-sdk-code-generator/gem_builder.rb +3 -5
  6. data/lib/aws-sdk-code-generator/plugin_list.rb +2 -1
  7. data/lib/aws-sdk-code-generator/rbs/error_list.rb +38 -0
  8. data/lib/aws-sdk-code-generator/rbs/keyword_argument_builder.rb +159 -0
  9. data/lib/aws-sdk-code-generator/rbs/method_signature.rb +11 -0
  10. data/lib/aws-sdk-code-generator/rbs/resource_action.rb +39 -0
  11. data/lib/aws-sdk-code-generator/rbs/resource_association.rb +50 -0
  12. data/lib/aws-sdk-code-generator/rbs/resource_batch_action.rb +59 -0
  13. data/lib/aws-sdk-code-generator/rbs/resource_client_request.rb +40 -0
  14. data/lib/aws-sdk-code-generator/rbs/waiter.rb +53 -0
  15. data/lib/aws-sdk-code-generator/rbs.rb +40 -0
  16. data/lib/aws-sdk-code-generator/resource_batch_action_code.rb +3 -1
  17. data/lib/aws-sdk-code-generator/resource_client_request.rb +3 -1
  18. data/lib/aws-sdk-code-generator/resource_waiter.rb +6 -5
  19. data/lib/aws-sdk-code-generator/service.rb +21 -0
  20. data/lib/aws-sdk-code-generator/views/async_client_class.rb +5 -1
  21. data/lib/aws-sdk-code-generator/views/client_api_module.rb +29 -4
  22. data/lib/aws-sdk-code-generator/views/client_class.rb +5 -1
  23. data/lib/aws-sdk-code-generator/views/endpoint_provider_class.rb +221 -2
  24. data/lib/aws-sdk-code-generator/views/event_streams_module.rb +7 -1
  25. data/lib/aws-sdk-code-generator/views/features/smoke.rb +99 -23
  26. data/lib/aws-sdk-code-generator/views/features/step_definitions.rb +1 -4
  27. data/lib/aws-sdk-code-generator/views/gemspec.rb +13 -3
  28. data/lib/aws-sdk-code-generator/views/rbs/client_class.rb +172 -0
  29. data/lib/aws-sdk-code-generator/views/rbs/errors_module.rb +28 -0
  30. data/lib/aws-sdk-code-generator/views/rbs/resource_class.rb +95 -0
  31. data/lib/aws-sdk-code-generator/views/rbs/root_resource_class.rb +30 -0
  32. data/lib/aws-sdk-code-generator/views/rbs/types_module.rb +257 -0
  33. data/lib/aws-sdk-code-generator/views/rbs/waiters_module.rb +22 -0
  34. data/lib/aws-sdk-code-generator/views/spec/endpoint_provider_spec_class.rb +5 -1
  35. data/lib/aws-sdk-code-generator/views/types_module.rb +8 -9
  36. data/lib/aws-sdk-code-generator.rb +17 -1
  37. data/templates/client_api_module.mustache +7 -0
  38. data/templates/client_class.mustache +0 -45
  39. data/templates/endpoint_provider_class.mustache +1 -19
  40. data/templates/endpoints_module.mustache +1 -0
  41. data/templates/endpoints_plugin.mustache +4 -2
  42. data/templates/features/smoke.mustache +11 -15
  43. data/templates/features/step_definitions.mustache +0 -5
  44. data/templates/gemspec.mustache +5 -2
  45. data/templates/rbs/client_class.mustache +39 -0
  46. data/templates/rbs/errors_module.mustache +17 -0
  47. data/templates/rbs/resource_class.mustache +71 -0
  48. data/templates/rbs/root_resource_class.mustache +26 -0
  49. data/templates/rbs/types_module.mustache +37 -0
  50. data/templates/rbs/waiters_module.mustache +17 -0
  51. data/templates/resource_class.mustache +3 -1
  52. data/templates/spec/endpoint_provider_spec_class.mustache +10 -0
  53. metadata +24 -5
  54. data/lib/aws-sdk-code-generator/views/features/smoke_step_definitions.rb +0 -26
  55. data/templates/features/smoke_step_definitions.mustache +0 -31
@@ -0,0 +1,257 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AwsSdkCodeGenerator
4
+ module Views
5
+ module RBS
6
+ class TypesModule < View
7
+
8
+ include Helper
9
+
10
+ # @option options [required, Service] :service
11
+ def initialize(options)
12
+ @service = options.fetch(:service)
13
+ @api = @service.api
14
+ end
15
+
16
+ # @return [String|nil]
17
+ def generated_src_warning
18
+ return if @service.protocol == 'api-gateway'
19
+ GENERATED_SRC_WARNING
20
+ end
21
+
22
+ def module_name
23
+ @service.module_name
24
+ end
25
+
26
+ # @return [Array<StructClass>]
27
+ def structures
28
+ @service.api['shapes'].each do |_, shape|
29
+ if shape['eventstream']
30
+ # add internal exception_event ctrait to all exceptions
31
+ # exceptions will not have the event trait.
32
+ shape['members'].each do |name, ref|
33
+ if !!@service.api['shapes'][ref['shape']]['exception']
34
+ @service.api['shapes'][ref['shape']]['exception_event'] = true
35
+ end
36
+ end
37
+ end
38
+ end
39
+ @service.api['shapes'].inject([]) do |list, (shape_name, shape)|
40
+ # APIG model can have input/output shape with downcase and '__'
41
+ if @service.protocol == 'api-gateway'
42
+ shape_name = lstrip_prefix(upcase_first(shape_name))
43
+ end
44
+ # eventstream shape will be inheriting from enumerator
45
+ if shape['eventstream']
46
+ list
47
+ elsif shape['type'] == 'structure' && !shape['document']
48
+ struct_members = struct_members(shape)
49
+ sensitive_params = struct_members.select(&:sensitive).map do |m|
50
+ m.member_name.to_sym
51
+ end
52
+ list << StructClass.new(
53
+ class_name: shape_name,
54
+ members: struct_members,
55
+ sensitive_params: sensitive_params,
56
+ documentation: struct_class_docs(shape_name, shape),
57
+ union: shape['union']
58
+ )
59
+ else
60
+ list
61
+ end
62
+ end
63
+ end
64
+
65
+ # return [Array<EventStreamClass>]
66
+ def eventstreams
67
+ @service.api['shapes'].inject([]) do |list, (shape_name, shape)|
68
+ if shape['eventstream']
69
+ list << EventStreamClass.new(
70
+ class_name: shape_name,
71
+ types: struct_members(shape),
72
+ documentation: eventstream_class_docs(shape_name, shape)
73
+ )
74
+ else
75
+ list
76
+ end
77
+ end
78
+ end
79
+
80
+ private
81
+
82
+ def struct_members(shape)
83
+ return if shape['members'].nil?
84
+ members = shape['members'].map do |member_name, member_ref|
85
+ sensitive = !!(member_ref['sensitive'] ||
86
+ @api['shapes'][member_ref['shape']]['sensitive'])
87
+ StructMember.new(
88
+ member_name: underscore(member_name),
89
+ sensitive: sensitive,
90
+ returns: AwsSdkCodeGenerator::RBS.to_type(member_ref, @api)
91
+ )
92
+ end
93
+ if shape['event'] || shape['exception_event']
94
+ members << StructMember.new(
95
+ member_name: 'event_type',
96
+ returns: 'untyped'
97
+ )
98
+ end
99
+ members
100
+ end
101
+
102
+ def struct_class_docs(shape_name, shape)
103
+ nil
104
+ end
105
+
106
+ def eventstream_class_docs(shape_name, shape)
107
+ nil
108
+ end
109
+
110
+ def eventstream_docs(shape_name)
111
+ nil
112
+ end
113
+
114
+ def output_example_docs(shape_name, shape)
115
+ nil
116
+ end
117
+
118
+ def input_example_docs(shape_name, shape)
119
+ nil
120
+ end
121
+
122
+ def attribute_macros_docs(shape_name)
123
+ nil
124
+ end
125
+
126
+ def idempotency_token?(member_ref)
127
+ member_ref['idempotencyToken'] || shape(member_ref)['idempotencyToken']
128
+ end
129
+
130
+ def idempotency_token_msg
131
+ "<p><b>A suitable default value is auto-generated.</b> You should normally not need to pass this option.</p>"
132
+ end
133
+
134
+ def visit_shapes(shape_ref, shapes)
135
+ return if shapes.include?(shape_ref['shape']) # recursion
136
+ shapes << shape_ref['shape']
137
+ s = shape(shape_ref)
138
+ raise "cannot locate shape #{shape_ref['shape']}" if s.nil?
139
+ case s['type']
140
+ when 'structure'
141
+ return if s['members'].nil?
142
+ s['members'].each_pair do |_, member_ref|
143
+ visit_shapes(member_ref, shapes)
144
+ end
145
+ when 'list'
146
+ visit_shapes(s['member'], shapes)
147
+ when 'map'
148
+ visit_shapes(s['key'], shapes)
149
+ visit_shapes(s['value'], shapes)
150
+ end
151
+ end
152
+
153
+ def shape(shape_ref)
154
+ Api.resolve(shape_ref, @api)[1]
155
+ end
156
+
157
+ class EventStreamClass
158
+
159
+ def initialize(options)
160
+ @class_name = options.fetch(:class_name)
161
+ @types = options.fetch(:types)
162
+ @documentation = options.fetch(:documentation)
163
+ if @types.nil? || @types.empty?
164
+ @empty = true
165
+ else
166
+ @empty = false
167
+ @types.last.last = true
168
+ end
169
+ end
170
+
171
+ # @return [String]
172
+ attr_accessor :class_name
173
+
174
+ # @return [Array<StructMember>]
175
+ attr_accessor :types
176
+
177
+ # @return [String, nil]
178
+ attr_accessor :documentation
179
+
180
+ # @return [Boolean]
181
+ def empty?
182
+ @empty
183
+ end
184
+
185
+ end
186
+
187
+ class StructClass
188
+
189
+ def initialize(options)
190
+ @class_name = options.fetch(:class_name)
191
+ @members = options.fetch(:members)
192
+ @documentation = options.fetch(:documentation)
193
+ @sensitive_params = options.fetch(:sensitive_params)
194
+ @union = options.fetch(:union)
195
+ @members << StructMember.new(
196
+ member_name: :unknown,
197
+ returns: 'untyped' # FIXME
198
+ ) if @union
199
+ if @members.nil? || @members.empty?
200
+ @empty = true
201
+ else
202
+ @empty = false
203
+ @members.last.last = true
204
+ end
205
+ end
206
+
207
+ # @return [String]
208
+ attr_accessor :class_name
209
+
210
+ # @return [Array<StructMember>]
211
+ attr_accessor :members
212
+
213
+ # @return [String, nil]
214
+ attr_accessor :documentation
215
+
216
+ # @return [Array<Symbol>]
217
+ attr_accessor :sensitive_params
218
+
219
+ # @return [Boolean]
220
+ def union?
221
+ @union
222
+ end
223
+
224
+ # @return [Boolean]
225
+ def empty?
226
+ @empty
227
+ end
228
+ end
229
+
230
+ class StructMember
231
+ def initialize(member_name:, sensitive: false, returns:)
232
+ @member_name = member_name
233
+ @member_class_name = AwsSdkCodeGenerator::Helper::pascal_case(@member_name)
234
+ @sensitive = sensitive
235
+ @returns = returns
236
+ @last = false
237
+ end
238
+
239
+ # @return [String]
240
+ attr_accessor :member_name
241
+
242
+ # @return [Boolean]
243
+ attr_accessor :sensitive
244
+
245
+ # @return [String]
246
+ attr_accessor :member_class_name
247
+
248
+ # @return [String]
249
+ attr_accessor :returns
250
+
251
+ # @return [Boolean]
252
+ attr_accessor :last
253
+ end
254
+ end
255
+ end
256
+ end
257
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AwsSdkCodeGenerator
4
+ module Views
5
+ module RBS
6
+ class WaitersModule < View
7
+ attr_reader :service_name
8
+ attr_reader :waiters
9
+
10
+ def initialize(service_name:, api:, waiters:)
11
+ @service_name = service_name
12
+ @waiters = AwsSdkCodeGenerator::RBS::Waiter.build_list(api: api, waiters: waiters)
13
+ end
14
+
15
+ # @return [String|nil]
16
+ def generated_src_warning
17
+ GENERATED_SRC_WARNING
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -90,6 +90,10 @@ module AwsSdkCodeGenerator
90
90
  !@expect['endpoint']['properties']['authSchemes'].empty?
91
91
  end
92
92
 
93
+ def s3_express_auth?
94
+ expect_auth? && expected_auth['name'] == 'sigv4-s3express'
95
+ end
96
+
93
97
  def expected_headers
94
98
  @expect['endpoint']['headers'].map { |k,v| Param.new(k, v.join(",")) }
95
99
  end
@@ -137,7 +141,7 @@ module AwsSdkCodeGenerator
137
141
  case value
138
142
  when Hash
139
143
  value.each_with_object({}) do |(k, v), o|
140
- o[Underscore.underscore(k)] = transform_operation_values(v)
144
+ o[Underscore.underscore(k).to_sym] = transform_operation_values(v)
141
145
  end
142
146
  when Array
143
147
  value.map { |v| transform_operation_values(v) }
@@ -28,14 +28,13 @@ module AwsSdkCodeGenerator
28
28
 
29
29
  # @return [Array<StructClass>]
30
30
  def structures
31
- unless @service.protocol_settings.empty?
32
- if @service.protocol_settings['h2'] == 'eventstream'
33
- @service.api['shapes'].each do |_, shape|
34
- if shape['eventstream']
35
- # add event trait to all members if not exists
36
- shape['members'].each do |name, ref|
37
- @service.api['shapes'][ref['shape']]['event'] = true
38
- end
31
+ @service.api['shapes'].each do |_, shape|
32
+ if shape['eventstream']
33
+ # add internal exception_event ctrait to all exceptions
34
+ # exceptions will not have the event trait.
35
+ shape['members'].each do |name, ref|
36
+ if !!@service.api['shapes'][ref['shape']]['exception']
37
+ @service.api['shapes'][ref['shape']]['exception_event'] = true
39
38
  end
40
39
  end
41
40
  end
@@ -93,7 +92,7 @@ module AwsSdkCodeGenerator
93
92
  sensitive: sensitive
94
93
  )
95
94
  end
96
- if shape['event']
95
+ if shape['event'] || shape['exception_event']
97
96
  members << StructMember.new(member_name: 'event_type')
98
97
  end
99
98
  members
@@ -50,7 +50,6 @@ require_relative 'aws-sdk-code-generator/views/docstring'
50
50
  require_relative 'aws-sdk-code-generator/views/errors_module'
51
51
  require_relative 'aws-sdk-code-generator/views/features/env'
52
52
  require_relative 'aws-sdk-code-generator/views/features/step_definitions'
53
- require_relative 'aws-sdk-code-generator/views/features/smoke_step_definitions'
54
53
  require_relative 'aws-sdk-code-generator/views/features/smoke'
55
54
  require_relative 'aws-sdk-code-generator/views/gemspec'
56
55
  require_relative 'aws-sdk-code-generator/views/resource_class'
@@ -76,6 +75,23 @@ require_relative 'aws-sdk-code-generator/yard_option_tag'
76
75
  require_relative 'aws-sdk-code-generator/code_builder'
77
76
  require_relative 'aws-sdk-code-generator/gem_builder'
78
77
 
78
+ # RBS
79
+ require_relative 'aws-sdk-code-generator/rbs'
80
+ require_relative 'aws-sdk-code-generator/rbs/error_list'
81
+ require_relative 'aws-sdk-code-generator/rbs/method_signature'
82
+ require_relative 'aws-sdk-code-generator/rbs/keyword_argument_builder'
83
+ require_relative 'aws-sdk-code-generator/rbs/resource_action'
84
+ require_relative 'aws-sdk-code-generator/rbs/resource_association'
85
+ require_relative 'aws-sdk-code-generator/rbs/resource_batch_action'
86
+ require_relative 'aws-sdk-code-generator/rbs/resource_client_request'
87
+ require_relative 'aws-sdk-code-generator/rbs/waiter'
88
+ require_relative 'aws-sdk-code-generator/views/rbs/client_class'
89
+ require_relative 'aws-sdk-code-generator/views/rbs/errors_module'
90
+ require_relative 'aws-sdk-code-generator/views/rbs/resource_class'
91
+ require_relative 'aws-sdk-code-generator/views/rbs/root_resource_class'
92
+ require_relative 'aws-sdk-code-generator/views/rbs/types_module'
93
+ require_relative 'aws-sdk-code-generator/views/rbs/waiters_module'
94
+
79
95
  module AwsSdkCodeGenerator
80
96
 
81
97
  GENERATED_SRC_WARNING = <<-WARNING_TXT
@@ -51,6 +51,13 @@ module {{module_name}}
51
51
  {{/http_checksum}}
52
52
  }
53
53
  {{/http_checksum}}
54
+ {{#request_compression}}
55
+ o.request_compression = {
56
+ {{#request_compression}}
57
+ {{{key}}} => {{{value}}},
58
+ {{/request_compression}}
59
+ }
60
+ {{/request_compression}}
54
61
  {{#deprecated}}
55
62
  o.deprecated = true
56
63
  {{/deprecated}}
@@ -38,51 +38,6 @@ module {{module_name}}
38
38
  # @overload initialize(options)
39
39
  # @param [Hash] options
40
40
  {{>documentation}}
41
- # @option options [URI::HTTP,String] :http_proxy A proxy to send
42
- # requests through. Formatted like 'http://proxy.com:123'.
43
- #
44
- # @option options [Float] :http_open_timeout (15) The number of
45
- # seconds to wait when opening a HTTP session before raising a
46
- # `Timeout::Error`.
47
- #
48
- # @option options [Float] :http_read_timeout (60) The default
49
- # number of seconds to wait for response data. This value can
50
- # safely be set per-request on the session.
51
- #
52
- # @option options [Float] :http_idle_timeout (5) The number of
53
- # seconds a connection is allowed to sit idle before it is
54
- # considered stale. Stale connections are closed and removed
55
- # from the pool before making a request.
56
- #
57
- # @option options [Float] :http_continue_timeout (1) The number of
58
- # seconds to wait for a 100-continue response before sending the
59
- # request body. This option has no effect unless the request has
60
- # "Expect" header set to "100-continue". Defaults to `nil` which
61
- # disables this behaviour. This value can safely be set per
62
- # request on the session.
63
- #
64
- # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout
65
- # in seconds.
66
- #
67
- # @option options [Boolean] :http_wire_trace (false) When `true`,
68
- # HTTP debug output will be sent to the `:logger`.
69
- #
70
- # @option options [Boolean] :ssl_verify_peer (true) When `true`,
71
- # SSL peer certificates are verified when establishing a
72
- # connection.
73
- #
74
- # @option options [String] :ssl_ca_bundle Full path to the SSL
75
- # certificate authority bundle file that should be used when
76
- # verifying peer certificates. If you do not pass
77
- # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default
78
- # will be used if available.
79
- #
80
- # @option options [String] :ssl_ca_directory Full path of the
81
- # directory that contains the unbundled SSL certificate
82
- # authority files for verifying peer certificates. If you do
83
- # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the
84
- # system default will be used if available.
85
- #
86
41
  {{/client_constructor}}
87
42
  def initialize(*args)
88
43
  super
@@ -5,26 +5,8 @@
5
5
  {{/generated_src_warning}}
6
6
  module {{module_name}}
7
7
  class EndpointProvider
8
- def initialize(rule_set = nil)
9
- @@rule_set ||= begin
10
- endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
11
- Aws::Endpoints::RuleSet.new(
12
- version: endpoint_rules['version'],
13
- service_id: endpoint_rules['serviceId'],
14
- parameters: endpoint_rules['parameters'],
15
- rules: endpoint_rules['rules']
16
- )
17
- end
18
- @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
19
- end
20
-
21
8
  def resolve_endpoint(parameters)
22
- @provider.resolve_endpoint(parameters)
9
+ {{{ endpoint_rules_code }}}
23
10
  end
24
-
25
- # @api private
26
- RULES = <<-JSON
27
- {{endpoint_rules_encoded}}
28
- JSON
29
11
  end
30
12
  end
@@ -5,6 +5,7 @@
5
5
  {{/generated_src_warning}}
6
6
 
7
7
  module {{module_name}}
8
+ # @api private
8
9
  module Endpoints
9
10
 
10
11
  {{#endpoint_classes}}
@@ -10,6 +10,7 @@ module {{module_name}}
10
10
  option(
11
11
  :endpoint_provider,
12
12
  doc_type: '{{module_name}}::EndpointProvider',
13
+ rbs_type: 'untyped',
13
14
  docstring: 'The endpoint provider used to resolve endpoints. Any '\
14
15
  'object that responds to `#resolve_endpoint(parameters)` '\
15
16
  'where `parameters` is a Struct similar to '\
@@ -29,16 +30,17 @@ module {{module_name}}
29
30
  # @api private
30
31
  class Handler < Seahorse::Client::Handler
31
32
  def call(context)
32
- # If endpoint was discovered, do not resolve or apply the endpoint.
33
33
  unless context[:discovered_endpoint]
34
34
  params = parameters_for_operation(context)
35
35
  endpoint = context.config.endpoint_provider.resolve_endpoint(params)
36
36
 
37
37
  context.http_request.endpoint = endpoint.url
38
38
  apply_endpoint_headers(context, endpoint.headers)
39
+
40
+ context[:endpoint_params] = params
41
+ context[:endpoint_properties] = endpoint.properties
39
42
  end
40
43
 
41
- context[:endpoint_params] = params
42
44
  context[:auth_scheme] =
43
45
  Aws::Endpoints.resolve_auth_scheme(context, endpoint)
44
46
 
@@ -1,22 +1,18 @@
1
1
  {{#generated_src_warning}}
2
2
  {{generated_src_warning}}
3
3
  {{/generated_src_warning}}
4
- Feature: Smoke tests for {{service}}
5
-
6
- Background:
7
- {{#client_endpoint}}
8
- Given I create a client with endpoint '{{client_endpoint}}'
9
- {{/client_endpoint}}
10
- {{^client_endpoint}}
11
- Given I create a client in region '{{client_region}}'
12
- {{/client_endpoint}}
4
+ Feature: Smoke tests for {{service_name}}
13
5
  {{#smoke_tests}}
14
6
 
15
- {{smoke_test_tags}}
16
- Scenario: {{scenario_string}}
17
- When I call the operation '{{operation}}' with params:
18
- """
7
+ {{tags}}
8
+ Scenario: {{id}}
9
+ Given I create a '{{service_module}}' client with config:
10
+ """
11
+ {{&config_hash}}
12
+ """
13
+ When I call the operation '{{operation_name}}' with params:
14
+ """
19
15
  {{&param_hash}}
20
- """
21
- Then {{error_expectation}}
16
+ """
17
+ Then {{&expectation}}
22
18
  {{/smoke_tests}}
@@ -1,10 +1,5 @@
1
1
  Before("@{{var_name}}") do
2
- {{#client_endpoint}}
3
- @service = {{module_name}}::Resource.new(endpoint: '{{client_endpoint}}')
4
- {{/client_endpoint}}
5
- {{^client_endpoint}}
6
2
  @service = {{module_name}}::Resource.new
7
- {{/client_endpoint}}
8
3
  @client = @service.client
9
4
  end
10
5
 
@@ -24,8 +24,11 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  {{/metadata}}
26
26
  {{#dependencies}}
27
- spec.add_dependency('{{gem}}', '{{&version}}')
27
+ spec.add_dependency({{{gem_version}}})
28
28
  {{/dependencies}}
29
29
 
30
- spec.required_ruby_version = '>= 2.3'
30
+ spec.required_ruby_version = '>= 2.5'
31
+ {{#deprecated?}}
32
+ spec.post_install_message = '*** {{gem_name}} is deprecated ***'
33
+ {{/deprecated?}}
31
34
  end
@@ -0,0 +1,39 @@
1
+ {{generated_src_warning}}
2
+ module Aws
3
+ module {{service_name}}
4
+ class Client < ::Seahorse::Client::Base
5
+ include ::Aws::ClientStubs
6
+
7
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/{{service_name}}/Client.html#initialize-instance_method
8
+ def self.new: ({{{client_option}}}) -> instance
9
+ | (?Hash[Symbol, untyped]) -> instance
10
+
11
+ {{#operations}}
12
+
13
+ {{^empty_structure}}
14
+ interface {{interface}}
15
+ include ::Seahorse::Client::_ResponseSuccess[{{data}}]
16
+ {{#returns_members}}
17
+ def {{method_name}}: () -> {{{returns}}}
18
+ {{/returns_members}}
19
+ end
20
+ {{/empty_structure}}
21
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/{{service_name}}/Client.html#{{method_name}}-instance_method
22
+ {{{signature}}}
23
+ {{/operations}}
24
+ {{#waiters?}}
25
+
26
+ {{#waiters_first}}
27
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/{{service_name}}/Client.html#wait_until-instance_method
28
+ def wait_until: {{{client_overload_keyword_argument}}}
29
+ | {{{client_overload_positional_argument}}}
30
+ {{/waiters_first}}
31
+ {{#waiters_others}}
32
+ | {{{client_overload_keyword_argument}}}
33
+ | {{{client_overload_positional_argument}}}
34
+ {{/waiters_others}}
35
+ {{/waiters?}}
36
+ end
37
+ end
38
+ end
39
+
@@ -0,0 +1,17 @@
1
+ {{generated_src_warning}}
2
+ module Aws
3
+ module {{service_name}}
4
+ module Errors
5
+ class ServiceError < ::Aws::Errors::ServiceError
6
+ end
7
+
8
+ {{#errors}}
9
+ class {{name}} < ::Aws::Errors::ServiceError
10
+ {{#members}}
11
+ {{{signature}}}
12
+ {{/members}}
13
+ end
14
+ {{/errors}}
15
+ end
16
+ end
17
+ end