aws-sdk-core 3.191.1 → 3.228.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 (181) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +530 -1
  3. data/VERSION +1 -1
  4. data/lib/aws-defaults/default_configuration.rb +1 -2
  5. data/lib/aws-defaults.rb +4 -1
  6. data/lib/aws-sdk-core/arn.rb +1 -3
  7. data/lib/aws-sdk-core/assume_role_credentials.rb +13 -5
  8. data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +14 -7
  9. data/lib/aws-sdk-core/binary/decode_handler.rb +3 -9
  10. data/lib/aws-sdk-core/binary/encode_handler.rb +1 -1
  11. data/lib/aws-sdk-core/binary/event_builder.rb +34 -37
  12. data/lib/aws-sdk-core/binary/event_stream_decoder.rb +1 -0
  13. data/lib/aws-sdk-core/binary/event_stream_encoder.rb +4 -3
  14. data/lib/aws-sdk-core/cbor/decoder.rb +308 -0
  15. data/lib/aws-sdk-core/cbor/encoder.rb +243 -0
  16. data/lib/aws-sdk-core/cbor.rb +53 -0
  17. data/lib/aws-sdk-core/client_side_monitoring.rb +9 -0
  18. data/lib/aws-sdk-core/client_stubs.rb +30 -55
  19. data/lib/aws-sdk-core/credential_provider.rb +4 -0
  20. data/lib/aws-sdk-core/credential_provider_chain.rb +38 -11
  21. data/lib/aws-sdk-core/credentials.rb +19 -6
  22. data/lib/aws-sdk-core/ec2_metadata.rb +1 -1
  23. data/lib/aws-sdk-core/ecs_credentials.rb +1 -0
  24. data/lib/aws-sdk-core/endpoints/endpoint.rb +3 -1
  25. data/lib/aws-sdk-core/endpoints/matchers.rb +8 -10
  26. data/lib/aws-sdk-core/endpoints.rb +101 -21
  27. data/lib/aws-sdk-core/error_handler.rb +46 -0
  28. data/lib/aws-sdk-core/errors.rb +11 -2
  29. data/lib/aws-sdk-core/event_emitter.rb +1 -17
  30. data/lib/aws-sdk-core/instance_profile_credentials.rb +148 -158
  31. data/lib/aws-sdk-core/json/builder.rb +8 -1
  32. data/lib/aws-sdk-core/json/error_handler.rb +29 -13
  33. data/lib/aws-sdk-core/json/handler.rb +6 -6
  34. data/lib/aws-sdk-core/json/json_engine.rb +3 -1
  35. data/lib/aws-sdk-core/json/oj_engine.rb +7 -1
  36. data/lib/aws-sdk-core/json/parser.rb +6 -1
  37. data/lib/aws-sdk-core/json.rb +43 -14
  38. data/lib/aws-sdk-core/log/param_filter.rb +2 -2
  39. data/lib/aws-sdk-core/log/param_formatter.rb +7 -3
  40. data/lib/aws-sdk-core/log.rb +10 -0
  41. data/lib/aws-sdk-core/lru_cache.rb +75 -0
  42. data/lib/aws-sdk-core/pageable_response.rb +1 -1
  43. data/lib/aws-sdk-core/param_validator.rb +7 -2
  44. data/lib/aws-sdk-core/plugins/bearer_authorization.rb +2 -0
  45. data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +332 -169
  46. data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +0 -1
  47. data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +14 -2
  48. data/lib/aws-sdk-core/plugins/credentials_configuration.rb +87 -68
  49. data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +40 -32
  50. data/lib/aws-sdk-core/plugins/global_configuration.rb +8 -9
  51. data/lib/aws-sdk-core/plugins/http_checksum.rb +2 -8
  52. data/lib/aws-sdk-core/plugins/invocation_id.rb +1 -11
  53. data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +3 -1
  54. data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -24
  55. data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +6 -8
  56. data/lib/aws-sdk-core/plugins/protocols/query.rb +4 -2
  57. data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +3 -15
  58. data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +3 -0
  59. data/lib/aws-sdk-core/plugins/protocols/rpc_v2.rb +17 -0
  60. data/lib/aws-sdk-core/plugins/regional_endpoint.rb +74 -25
  61. data/lib/aws-sdk-core/plugins/request_compression.rb +11 -2
  62. data/lib/aws-sdk-core/plugins/retry_errors.rb +10 -3
  63. data/lib/aws-sdk-core/plugins/sign.rb +42 -26
  64. data/lib/aws-sdk-core/plugins/signature_v2.rb +2 -1
  65. data/lib/aws-sdk-core/plugins/signature_v4.rb +2 -1
  66. data/lib/aws-sdk-core/plugins/stub_responses.rb +58 -9
  67. data/lib/aws-sdk-core/plugins/telemetry.rb +75 -0
  68. data/lib/aws-sdk-core/plugins/transfer_encoding.rb +16 -9
  69. data/lib/aws-sdk-core/plugins/user_agent.rb +101 -26
  70. data/lib/aws-sdk-core/plugins.rb +39 -0
  71. data/lib/aws-sdk-core/process_credentials.rb +48 -29
  72. data/lib/aws-sdk-core/query/ec2_handler.rb +27 -0
  73. data/lib/aws-sdk-core/query/ec2_param_builder.rb +5 -7
  74. data/lib/aws-sdk-core/query/handler.rb +4 -4
  75. data/lib/aws-sdk-core/query/param_builder.rb +2 -2
  76. data/lib/aws-sdk-core/query.rb +2 -1
  77. data/lib/aws-sdk-core/resources.rb +8 -0
  78. data/lib/aws-sdk-core/rest/content_type_handler.rb +60 -0
  79. data/lib/aws-sdk-core/rest/handler.rb +3 -4
  80. data/lib/aws-sdk-core/rest/request/body.rb +32 -5
  81. data/lib/aws-sdk-core/rest/request/endpoint.rb +24 -4
  82. data/lib/aws-sdk-core/rest/request/headers.rb +15 -7
  83. data/lib/aws-sdk-core/rest/request/querystring_builder.rb +23 -11
  84. data/lib/aws-sdk-core/rest/response/body.rb +15 -1
  85. data/lib/aws-sdk-core/rest/response/header_list_parser.rb +79 -0
  86. data/lib/aws-sdk-core/rest/response/headers.rb +8 -3
  87. data/lib/aws-sdk-core/rest.rb +1 -0
  88. data/lib/aws-sdk-core/rpc_v2/builder.rb +62 -0
  89. data/lib/aws-sdk-core/rpc_v2/cbor_engine.rb +18 -0
  90. data/lib/aws-sdk-core/rpc_v2/content_type_handler.rb +47 -0
  91. data/lib/aws-sdk-core/rpc_v2/error_handler.rb +95 -0
  92. data/lib/aws-sdk-core/rpc_v2/handler.rb +79 -0
  93. data/lib/aws-sdk-core/rpc_v2/parser.rb +98 -0
  94. data/lib/aws-sdk-core/rpc_v2.rb +69 -0
  95. data/lib/aws-sdk-core/shared_config.rb +79 -22
  96. data/lib/aws-sdk-core/shared_credentials.rb +1 -7
  97. data/lib/aws-sdk-core/sso_credentials.rb +4 -1
  98. data/lib/aws-sdk-core/static_token_provider.rb +1 -2
  99. data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +12 -11
  100. data/lib/aws-sdk-core/stubbing/protocols/json.rb +11 -10
  101. data/lib/aws-sdk-core/stubbing/protocols/query.rb +7 -6
  102. data/lib/aws-sdk-core/stubbing/protocols/rest.rb +2 -1
  103. data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +9 -8
  104. data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +6 -5
  105. data/lib/aws-sdk-core/stubbing/protocols/rpc_v2.rb +39 -0
  106. data/lib/aws-sdk-core/stubbing.rb +22 -0
  107. data/lib/aws-sdk-core/telemetry/base.rb +177 -0
  108. data/lib/aws-sdk-core/telemetry/no_op.rb +70 -0
  109. data/lib/aws-sdk-core/telemetry/otel.rb +235 -0
  110. data/lib/aws-sdk-core/telemetry/span_kind.rb +22 -0
  111. data/lib/aws-sdk-core/telemetry/span_status.rb +59 -0
  112. data/lib/aws-sdk-core/telemetry.rb +78 -0
  113. data/lib/aws-sdk-core/token.rb +3 -3
  114. data/lib/aws-sdk-core/token_provider.rb +4 -0
  115. data/lib/aws-sdk-core/token_provider_chain.rb +2 -6
  116. data/lib/aws-sdk-core/util.rb +41 -1
  117. data/lib/aws-sdk-core/waiters/poller.rb +10 -5
  118. data/lib/aws-sdk-core/xml/builder.rb +17 -9
  119. data/lib/aws-sdk-core/xml/error_handler.rb +35 -43
  120. data/lib/aws-sdk-core/xml/parser/frame.rb +4 -20
  121. data/lib/aws-sdk-core/xml/parser/stack.rb +2 -0
  122. data/lib/aws-sdk-core/xml/parser.rb +2 -6
  123. data/lib/aws-sdk-core.rb +82 -107
  124. data/lib/aws-sdk-sso/client.rb +185 -89
  125. data/lib/aws-sdk-sso/client_api.rb +7 -0
  126. data/lib/aws-sdk-sso/endpoint_parameters.rb +9 -6
  127. data/lib/aws-sdk-sso/endpoint_provider.rb +14 -18
  128. data/lib/aws-sdk-sso/endpoints.rb +2 -54
  129. data/lib/aws-sdk-sso/plugins/endpoints.rb +19 -20
  130. data/lib/aws-sdk-sso/types.rb +1 -0
  131. data/lib/aws-sdk-sso.rb +15 -11
  132. data/lib/aws-sdk-ssooidc/client.rb +270 -109
  133. data/lib/aws-sdk-ssooidc/client_api.rb +33 -0
  134. data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +9 -6
  135. data/lib/aws-sdk-ssooidc/endpoint_provider.rb +14 -18
  136. data/lib/aws-sdk-ssooidc/endpoints.rb +2 -54
  137. data/lib/aws-sdk-ssooidc/errors.rb +21 -0
  138. data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +19 -20
  139. data/lib/aws-sdk-ssooidc/types.rb +125 -24
  140. data/lib/aws-sdk-ssooidc.rb +15 -11
  141. data/lib/aws-sdk-sts/client.rb +393 -141
  142. data/lib/aws-sdk-sts/client_api.rb +36 -8
  143. data/lib/aws-sdk-sts/customizations.rb +5 -1
  144. data/lib/aws-sdk-sts/endpoint_parameters.rb +10 -9
  145. data/lib/aws-sdk-sts/endpoint_provider.rb +50 -55
  146. data/lib/aws-sdk-sts/endpoints.rb +2 -118
  147. data/lib/aws-sdk-sts/errors.rb +15 -0
  148. data/lib/aws-sdk-sts/plugins/endpoints.rb +19 -28
  149. data/lib/aws-sdk-sts/presigner.rb +2 -6
  150. data/lib/aws-sdk-sts/types.rb +171 -28
  151. data/lib/aws-sdk-sts.rb +15 -11
  152. data/lib/seahorse/client/async_base.rb +4 -5
  153. data/lib/seahorse/client/async_response.rb +19 -0
  154. data/lib/seahorse/client/base.rb +18 -21
  155. data/lib/seahorse/client/h2/connection.rb +18 -28
  156. data/lib/seahorse/client/h2/handler.rb +14 -3
  157. data/lib/seahorse/client/handler.rb +1 -1
  158. data/lib/seahorse/client/http/response.rb +1 -1
  159. data/lib/seahorse/client/net_http/connection_pool.rb +15 -12
  160. data/lib/seahorse/client/net_http/handler.rb +21 -9
  161. data/lib/seahorse/client/networking_error.rb +1 -1
  162. data/lib/seahorse/client/plugin.rb +8 -0
  163. data/lib/seahorse/client/plugins/endpoint.rb +0 -1
  164. data/lib/seahorse/client/plugins/h2.rb +4 -4
  165. data/lib/seahorse/client/plugins/net_http.rb +57 -16
  166. data/lib/seahorse/client/request_context.rb +9 -2
  167. data/lib/seahorse/client/response.rb +2 -0
  168. data/lib/seahorse/model/shapes.rb +2 -2
  169. data/lib/seahorse/util.rb +2 -1
  170. data/sig/aws-sdk-core/async_client_stubs.rbs +21 -0
  171. data/sig/aws-sdk-core/telemetry/base.rbs +46 -0
  172. data/sig/aws-sdk-core/telemetry/otel.rbs +22 -0
  173. data/sig/aws-sdk-core/telemetry/span_kind.rbs +15 -0
  174. data/sig/aws-sdk-core/telemetry/span_status.rbs +24 -0
  175. data/sig/seahorse/client/async_base.rbs +18 -0
  176. metadata +96 -23
  177. /data/lib/aws-sdk-core/xml/parser/{engines/libxml.rb → libxml_engine.rb} +0 -0
  178. /data/lib/aws-sdk-core/xml/parser/{engines/nokogiri.rb → nokogiri_engine.rb} +0 -0
  179. /data/lib/aws-sdk-core/xml/parser/{engines/oga.rb → oga_engine.rb} +0 -0
  180. /data/lib/aws-sdk-core/xml/parser/{engines/ox.rb → ox_engine.rb} +0 -0
  181. /data/lib/aws-sdk-core/xml/parser/{engines/rexml.rb → rexml_engine.rb} +0 -0
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cgi'
3
+ require "cgi/escape"
4
+ require "cgi/util" if RUBY_VERSION < "3.5"
4
5
 
5
6
  module Aws
6
7
  # @api private
@@ -67,6 +68,45 @@ module Aws
67
68
  end
68
69
  end
69
70
 
71
+ # @param [Number] input
72
+ # @return [Number, String] The serialized number
73
+ def serialize_number(input)
74
+ if input == ::Float::INFINITY then 'Infinity'
75
+ elsif input == -::Float::INFINITY then '-Infinity'
76
+ elsif input&.nan? then 'NaN'
77
+ else
78
+ input
79
+ end
80
+ end
81
+
82
+ # @param [String] str
83
+ # @return [Number] The input as a number
84
+ def deserialize_number(str)
85
+ case str
86
+ when 'Infinity' then ::Float::INFINITY
87
+ when '-Infinity' then -::Float::INFINITY
88
+ when 'NaN' then ::Float::NAN
89
+ when nil then nil
90
+ else str.to_f
91
+ end
92
+ end
93
+
94
+ # @param [String] value
95
+ # @return [Time]
96
+ def deserialize_time(value)
97
+ case value
98
+ when nil then nil
99
+ when /^[\d.]+$/ then Time.at(value.to_f).utc
100
+ else
101
+ begin
102
+ fractional_time = Time.parse(value).to_f
103
+ Time.at(fractional_time).utc
104
+ rescue ArgumentError
105
+ raise "unhandled timestamp format `#{value}'"
106
+ end
107
+ end
108
+ end
109
+
70
110
  end
71
111
  end
72
112
  end
@@ -29,7 +29,7 @@ module Aws
29
29
  # * `:retry` - The waiter may be retried.
30
30
  # * `:error` - The waiter encountered an un-expected error.
31
31
  #
32
- # @example A trival (bad) example of a waiter that polls indefinetly.
32
+ # @example A trivial (bad) example of a waiter that polls indefinetly.
33
33
  #
34
34
  # loop do
35
35
  #
@@ -62,7 +62,7 @@ module Aws
62
62
  def send_request(options)
63
63
  req = options[:client].build_request(@operation_name, options[:params])
64
64
  req.handlers.remove(RAISE_HANDLER)
65
- Aws::Plugins::UserAgent.feature('waiter') do
65
+ Aws::Plugins::UserAgent.metric('WAITER') do
66
66
  req.send_request
67
67
  end
68
68
  end
@@ -96,8 +96,13 @@ module Aws
96
96
  end
97
97
 
98
98
  def matches_error?(acceptor, response)
99
- Aws::Errors::ServiceError === response.error &&
100
- response.error.code == acceptor['expected'].delete('.')
99
+ case acceptor['expected']
100
+ when 'false' then response.error.nil?
101
+ when 'true' then !response.error.nil?
102
+ else
103
+ response.error.is_a?(Aws::Errors::ServiceError) &&
104
+ response.error.code == acceptor['expected'].delete('.')
105
+ end
101
106
  end
102
107
 
103
108
  def path(acceptor)
@@ -107,7 +112,7 @@ module Aws
107
112
  def non_empty_array(acceptor, response, &block)
108
113
  if response.data
109
114
  values = JMESPath.search(path(acceptor), response.data)
110
- Array === values && values.count > 0 ? yield(values) : false
115
+ values.is_a?(Array) && values.count > 0 ? yield(values) : false
111
116
  else
112
117
  false
113
118
  end
@@ -10,6 +10,8 @@ module Aws
10
10
 
11
11
  def initialize(rules, options = {})
12
12
  @rules = rules
13
+ @location_name =
14
+ options[:location_name].nil? ? @rules.location_name : options[:location_name]
13
15
  @xml = options[:target] || []
14
16
  indent = options[:indent] || ''
15
17
  pad = options[:pad] || ''
@@ -17,7 +19,7 @@ module Aws
17
19
  end
18
20
 
19
21
  def to_xml(params)
20
- structure(@rules.location_name, @rules, params)
22
+ structure(@location_name, @rules, params)
21
23
  @xml.join
22
24
  end
23
25
  alias serialize to_xml
@@ -50,7 +52,7 @@ module Aws
50
52
  def list(name, ref, values)
51
53
  if ref[:flattened] || ref.shape.flattened
52
54
  values.each do |value|
53
- member(ref.shape.member.location_name || name, ref.shape.member, value)
55
+ member(name, ref.shape.member, value)
54
56
  end
55
57
  else
56
58
  node(name, ref) do
@@ -65,7 +67,7 @@ module Aws
65
67
  def map(name, ref, hash)
66
68
  key_ref = ref.shape.key
67
69
  value_ref = ref.shape.value
68
- if ref.shape.flattened
70
+ if ref[:flattened] || ref.shape.flattened
69
71
  hash.each do |key, value|
70
72
  node(name, ref) do
71
73
  member(key_ref.location_name || 'key', key_ref, key)
@@ -75,7 +77,8 @@ module Aws
75
77
  else
76
78
  node(name, ref) do
77
79
  hash.each do |key, value|
78
- node('entry', ref) do
80
+ # Pass in a new ShapeRef to create an entry node
81
+ node('entry', ShapeRef.new) do
79
82
  member(key_ref.location_name || 'key', key_ref, key)
80
83
  member(value_ref.location_name || 'value', value_ref, value)
81
84
  end
@@ -129,11 +132,16 @@ module Aws
129
132
  end
130
133
 
131
134
  def shape_attrs(ref)
132
- if xmlns = ref['xmlNamespace']
133
- if prefix = xmlns['prefix']
134
- { 'xmlns:' + prefix => xmlns['uri'] }
135
- else
136
- { 'xmlns' => xmlns['uri'] }
135
+ if (xmlns = ref['xmlNamespace'])
136
+ case xmlns
137
+ when String
138
+ { 'xmlns' => xmlns }
139
+ when Hash
140
+ if (prefix = xmlns['prefix'])
141
+ { "xmlns:#{prefix}" => xmlns['uri'] }
142
+ else
143
+ { 'xmlns' => xmlns['uri'] }
144
+ end
137
145
  end
138
146
  else
139
147
  {}
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cgi'
3
+ require "cgi/escape"
4
+ require "cgi/util" if RUBY_VERSION < "3.5"
4
5
 
5
6
  module Aws
6
7
  module Xml
7
- class ErrorHandler < Seahorse::Client::Handler
8
+ # @api private
9
+ class ErrorHandler < Aws::ErrorHandler
8
10
 
9
11
  def call(context)
10
12
  @handler.call(context).on(300..599) do |response|
@@ -15,42 +17,29 @@ module Aws
15
17
 
16
18
  private
17
19
 
18
- def error(context)
19
- body = context.http_response.body_contents
20
- if body.empty?
21
- code = http_status_error_code(context)
22
- message = ''
23
- data = EmptyStructure.new
24
- else
25
- code, message, data = extract_error(body, context)
26
- end
27
- context[:request_id] = request_id(body)
28
- errors_module = context.client.class.errors_module
29
- error_class = errors_module.error_class(code).new(context, message, data)
30
- error_class
31
- end
32
-
33
20
  def extract_error(body, context)
21
+ context[:request_id] = request_id(body)
34
22
  code = error_code(body, context)
35
23
  [
36
24
  code,
37
25
  error_message(body),
38
- error_data(context, code)
26
+ error_data(context, body, code)
39
27
  ]
40
28
  end
41
29
 
42
- def error_data(context, code)
30
+ def error_data(context, body, code)
43
31
  data = EmptyStructure.new
44
- if error_rules = context.operation.errors
32
+ if (error_rules = context.operation.errors)
45
33
  error_rules.each do |rule|
46
- # for modeled shape with error trait
47
- # match `code` in the error trait before
48
- # match modeled shape name
34
+ # query protocol may have custom error code
35
+ # reference: https://smithy.io/2.0/aws/protocols/aws-query-protocol.html#error-code-resolution
49
36
  error_shape_code = rule.shape['error']['code'] if rule.shape['error']
50
37
  match = (code == error_shape_code || code == rule.shape.name)
51
- if match && rule.shape.members.any?
52
- data = Parser.new(rule).parse(context.http_response.body_contents)
53
- end
38
+ next unless match && rule.shape.members.any?
39
+
40
+ data = parse_error_data(rule, body)
41
+ # supporting HTTP bindings
42
+ apply_error_headers(rule, context, data)
54
43
  end
55
44
  end
56
45
  data
@@ -58,29 +47,32 @@ module Aws
58
47
  EmptyStructure.new
59
48
  end
60
49
 
50
+ def parse_error_data(rule, body)
51
+ # errors may nested under <Errors><Error>structure_data</Error></Errors>
52
+ # Or may be flat and under <Error>structure_data</Error>
53
+ body = body.tr("\n", '')
54
+ if (matches = body.match(/<Error>(.+?)<\/Error>/))
55
+ Parser.new(rule).parse("<#{rule.shape.name}>#{matches[1]}</#{rule.shape.name}>")
56
+ else
57
+ EmptyStructure.new
58
+ end
59
+ end
60
+
61
+ def apply_error_headers(rule, context, data)
62
+ headers = Aws::Rest::Response::Headers.new(rule)
63
+ headers.apply(context.http_response, data)
64
+ end
65
+
61
66
  def error_code(body, context)
62
- if matches = body.match(/<Code>(.+?)<\/Code>/)
67
+ if (matches = body.match(/<Code>(.+?)<\/Code>/))
63
68
  remove_prefix(unescape(matches[1]), context)
64
69
  else
65
70
  http_status_error_code(context)
66
71
  end
67
72
  end
68
73
 
69
- def http_status_error_code(context)
70
- status_code = context.http_response.status_code
71
- {
72
- 302 => 'MovedTemporarily',
73
- 304 => 'NotModified',
74
- 400 => 'BadRequest',
75
- 403 => 'Forbidden',
76
- 404 => 'NotFound',
77
- 412 => 'PreconditionFailed',
78
- 413 => 'RequestEntityTooLarge',
79
- }[status_code] || "Http#{status_code}Error"
80
- end
81
-
82
74
  def remove_prefix(error_code, context)
83
- if prefix = context.config.api.metadata['errorPrefix']
75
+ if (prefix = context.config.api.metadata['errorPrefix'])
84
76
  error_code.sub(/^#{prefix}/, '')
85
77
  else
86
78
  error_code
@@ -88,7 +80,7 @@ module Aws
88
80
  end
89
81
 
90
82
  def error_message(body)
91
- if matches = body.match(/<Message>(.+?)<\/Message>/m)
83
+ if (matches = body.match(/<Message>(.+?)<\/Message>/m))
92
84
  unescape(matches[1])
93
85
  else
94
86
  ''
@@ -96,7 +88,7 @@ module Aws
96
88
  end
97
89
 
98
90
  def request_id(body)
99
- if matches = body.match(/<RequestId>(.+?)<\/RequestId>/m)
91
+ if (matches = body.match(/<RequestId>(.+?)<\/RequestId>/m))
100
92
  matches[1]
101
93
  end
102
94
  end
@@ -138,11 +138,7 @@ module Aws
138
138
  end
139
139
 
140
140
  def xml_name(ref)
141
- if flattened_list?(ref)
142
- ref.shape.member.location_name || ref.location_name
143
- else
144
- ref.location_name
145
- end
141
+ ref.location_name
146
142
  end
147
143
 
148
144
  def flattened_list?(ref)
@@ -266,7 +262,7 @@ module Aws
266
262
 
267
263
  class BlobFrame < Frame
268
264
  def result
269
- @text.empty? ? nil : Base64.decode64(@text.join)
265
+ @text.empty? ? '' : Base64.decode64(@text.join)
270
266
  end
271
267
  end
272
268
 
@@ -278,7 +274,7 @@ module Aws
278
274
 
279
275
  class FloatFrame < Frame
280
276
  def result
281
- @text.empty? ? nil : @text.join.to_f
277
+ @text.empty? ? nil : Aws::Util.deserialize_number(@text.join)
282
278
  end
283
279
  end
284
280
 
@@ -296,19 +292,7 @@ module Aws
296
292
 
297
293
  class TimestampFrame < Frame
298
294
  def result
299
- @text.empty? ? nil : parse(@text.join)
300
- end
301
- def parse(value)
302
- case value
303
- when nil then nil
304
- when /^\d+$/ then Time.at(value.to_i)
305
- else
306
- begin
307
- Time.parse(value).utc
308
- rescue ArgumentError
309
- raise "unhandled timestamp format `#{value}'"
310
- end
311
- end
295
+ @text.empty? ? nil : Aws::Util.deserialize_time(@text.join)
312
296
  end
313
297
  end
314
298
 
@@ -24,6 +24,8 @@ module Aws
24
24
  if name.to_s == 'encoding' && value.to_s == 'base64'
25
25
  @frame = BlobFrame.new(name, @frame.parent, @frame.ref)
26
26
  else
27
+ # don't try to parse shapes from xml namespace
28
+ return if name.to_s == 'xmlns'
27
29
  start_element(name)
28
30
  text(value)
29
31
  end_element(name)
@@ -5,7 +5,6 @@ module Aws
5
5
  module Xml
6
6
  # A SAX-style XML parser that uses a shape context to handle types.
7
7
  class Parser
8
-
9
8
  # @param [Seahorse::Model::ShapeRef] rules
10
9
  def initialize(rules, options = {})
11
10
  @rules = rules
@@ -47,8 +46,7 @@ module Aws
47
46
  # * :libxml
48
47
  # * :nokogiri
49
48
  # * :rexml
50
- #
51
- def engine= engine
49
+ def engine=(engine)
52
50
  @engine = Class === engine ? engine : load_engine(engine)
53
51
  end
54
52
 
@@ -60,7 +58,6 @@ module Aws
60
58
  # * {LibxmlEngine}
61
59
  # * {NokogiriEngine}
62
60
  # * {RexmlEngine}
63
- #
64
61
  def engine
65
62
  set_default_engine unless @engine
66
63
  @engine
@@ -80,7 +77,7 @@ module Aws
80
77
  private
81
78
 
82
79
  def load_engine(name)
83
- require "aws-sdk-core/xml/parser/engines/#{name}"
80
+ require "aws-sdk-core/xml/parser/#{name}_engine"
84
81
  const_name = name[0].upcase + name[1..-1] + 'Engine'
85
82
  const_get(const_name)
86
83
  end
@@ -94,7 +91,6 @@ module Aws
94
91
  end
95
92
 
96
93
  set_default_engine
97
-
98
94
  end
99
95
  end
100
96
  end
data/lib/aws-sdk-core.rb CHANGED
@@ -3,120 +3,80 @@
3
3
  require 'aws-partitions'
4
4
  require 'seahorse'
5
5
  require 'jmespath'
6
+ require 'aws-sigv4'
6
7
 
7
8
  require_relative 'aws-sdk-core/deprecations'
8
-
9
- # credential providers
10
-
11
- require_relative 'aws-sdk-core/credential_provider'
12
- require_relative 'aws-sdk-core/refreshing_credentials'
13
- require_relative 'aws-sdk-core/assume_role_credentials'
14
- require_relative 'aws-sdk-core/assume_role_web_identity_credentials'
15
- require_relative 'aws-sdk-core/credentials'
16
- require_relative 'aws-sdk-core/credential_provider_chain'
17
- require_relative 'aws-sdk-core/ecs_credentials'
18
- require_relative 'aws-sdk-core/instance_profile_credentials'
19
- require_relative 'aws-sdk-core/shared_credentials'
20
- require_relative 'aws-sdk-core/process_credentials'
21
- require_relative 'aws-sdk-core/sso_credentials'
22
-
23
- # tokens and token providers
24
- require_relative 'aws-sdk-core/token'
25
- require_relative 'aws-sdk-core/token_provider'
26
- require_relative 'aws-sdk-core/static_token_provider'
27
- require_relative 'aws-sdk-core/refreshing_token'
28
- require_relative 'aws-sdk-core/sso_token_provider'
29
- require_relative 'aws-sdk-core/token_provider_chain'
30
- require_relative 'aws-sdk-core/plugins/bearer_authorization'
31
-
32
- # client modules
33
-
34
- require_relative 'aws-sdk-core/client_stubs'
35
- require_relative 'aws-sdk-core/async_client_stubs'
36
- require_relative 'aws-sdk-core/eager_loader'
37
- require_relative 'aws-sdk-core/errors'
38
- require_relative 'aws-sdk-core/pageable_response'
39
- require_relative 'aws-sdk-core/pager'
40
- require_relative 'aws-sdk-core/param_converter'
41
- require_relative 'aws-sdk-core/param_validator'
42
- require_relative 'aws-sdk-core/shared_config'
43
- require_relative 'aws-sdk-core/structure'
44
- require_relative 'aws-sdk-core/type_builder'
45
- require_relative 'aws-sdk-core/util'
46
-
47
- # resource classes
48
-
49
- require_relative 'aws-sdk-core/resources/collection'
50
-
51
- # logging
52
-
53
- require_relative 'aws-sdk-core/log/formatter'
54
- require_relative 'aws-sdk-core/log/param_filter'
55
- require_relative 'aws-sdk-core/log/param_formatter'
56
-
57
- # stubbing
58
-
59
- require_relative 'aws-sdk-core/stubbing/empty_stub'
60
- require_relative 'aws-sdk-core/stubbing/data_applicator'
61
- require_relative 'aws-sdk-core/stubbing/stub_data'
62
- require_relative 'aws-sdk-core/stubbing/xml_error'
63
-
64
- # stubbing protocols
65
-
66
- require_relative 'aws-sdk-core/stubbing/protocols/ec2'
67
- require_relative 'aws-sdk-core/stubbing/protocols/json'
68
- require_relative 'aws-sdk-core/stubbing/protocols/query'
69
- require_relative 'aws-sdk-core/stubbing/protocols/rest'
70
- require_relative 'aws-sdk-core/stubbing/protocols/rest_json'
71
- require_relative 'aws-sdk-core/stubbing/protocols/rest_xml'
72
- require_relative 'aws-sdk-core/stubbing/protocols/api_gateway'
73
-
74
- # protocols
75
-
76
- require_relative 'aws-sdk-core/rest'
77
- require_relative 'aws-sdk-core/xml'
78
- require_relative 'aws-sdk-core/json'
79
-
80
- # event stream
81
-
82
- require_relative 'aws-sdk-core/binary'
83
- require_relative 'aws-sdk-core/event_emitter'
84
-
85
- # endpoint discovery
86
-
87
- require_relative 'aws-sdk-core/endpoint_cache'
88
-
89
- # client metrics
90
-
91
- require_relative 'aws-sdk-core/client_side_monitoring/request_metrics'
92
- require_relative 'aws-sdk-core/client_side_monitoring/publisher'
93
-
94
- # utilities
95
-
96
- require_relative 'aws-sdk-core/arn'
97
- require_relative 'aws-sdk-core/arn_parser'
98
- require_relative 'aws-sdk-core/ec2_metadata'
99
-
100
- # dynamic endpoints
101
- require_relative 'aws-sdk-core/endpoints'
102
- require_relative 'aws-sdk-core/plugins/signature_v4'
103
-
104
9
  # defaults
105
10
  require_relative 'aws-defaults'
106
11
 
107
- # plugins
108
- # loaded through building STS or SSO ..
109
-
110
- # aws-sdk-sts is included to support Aws::AssumeRoleCredentials
111
- require_relative 'aws-sdk-sts'
112
-
113
- # aws-sdk-sso is included to support Aws::SSOCredentials
114
- require_relative 'aws-sdk-sso'
115
- require_relative 'aws-sdk-ssooidc'
116
-
117
12
  module Aws
118
13
 
119
- CORE_GEM_VERSION = File.read(File.expand_path('../../VERSION', __FILE__)).strip
14
+ autoload :IniParser, 'aws-sdk-core/ini_parser'
15
+
16
+ # Credentials and credentials providers
17
+ autoload :Credentials, 'aws-sdk-core/credentials'
18
+ autoload :CredentialProvider, 'aws-sdk-core/credential_provider'
19
+ autoload :RefreshingCredentials, 'aws-sdk-core/refreshing_credentials'
20
+ autoload :AssumeRoleCredentials, 'aws-sdk-core/assume_role_credentials'
21
+ autoload :AssumeRoleWebIdentityCredentials, 'aws-sdk-core/assume_role_web_identity_credentials'
22
+ autoload :CredentialProviderChain, 'aws-sdk-core/credential_provider_chain'
23
+ autoload :ECSCredentials, 'aws-sdk-core/ecs_credentials'
24
+ autoload :InstanceProfileCredentials, 'aws-sdk-core/instance_profile_credentials'
25
+ autoload :SharedCredentials, 'aws-sdk-core/shared_credentials'
26
+ autoload :ProcessCredentials, 'aws-sdk-core/process_credentials'
27
+ autoload :SSOCredentials, 'aws-sdk-core/sso_credentials'
28
+
29
+
30
+ # tokens and token providers
31
+ autoload :Token, 'aws-sdk-core/token'
32
+ autoload :TokenProvider, 'aws-sdk-core/token_provider'
33
+ autoload :StaticTokenProvider, 'aws-sdk-core/static_token_provider'
34
+ autoload :RefreshingToken, 'aws-sdk-core/refreshing_token'
35
+ autoload :SSOTokenProvider, 'aws-sdk-core/sso_token_provider'
36
+ autoload :TokenProviderChain, 'aws-sdk-core/token_provider_chain'
37
+
38
+ # client modules
39
+ autoload :ClientStubs, 'aws-sdk-core/client_stubs'
40
+ autoload :AsyncClientStubs, 'aws-sdk-core/async_client_stubs'
41
+ autoload :EagerLoader, 'aws-sdk-core/eager_loader'
42
+ autoload :Errors, 'aws-sdk-core/errors'
43
+ autoload :PageableResponse, 'aws-sdk-core/pageable_response'
44
+ autoload :Pager, 'aws-sdk-core/pager'
45
+ autoload :ParamConverter, 'aws-sdk-core/param_converter'
46
+ autoload :ParamValidator, 'aws-sdk-core/param_validator'
47
+ autoload :SharedConfig, 'aws-sdk-core/shared_config'
48
+ autoload :Structure, 'aws-sdk-core/structure'
49
+ autoload :EmptyStructure, 'aws-sdk-core/structure'
50
+ autoload :TypeBuilder, 'aws-sdk-core/type_builder'
51
+ autoload :Util, 'aws-sdk-core/util'
52
+
53
+ # protocols
54
+ autoload :ErrorHandler, 'aws-sdk-core/error_handler'
55
+ autoload :Rest, 'aws-sdk-core/rest'
56
+ autoload :Xml, 'aws-sdk-core/xml'
57
+ autoload :Json, 'aws-sdk-core/json'
58
+ autoload :Query, 'aws-sdk-core/query'
59
+ autoload :RpcV2, 'aws-sdk-core/rpc_v2'
60
+
61
+ # event stream
62
+ autoload :Binary, 'aws-sdk-core/binary'
63
+ autoload :EventEmitter, 'aws-sdk-core/event_emitter'
64
+
65
+ # endpoint discovery
66
+ autoload :EndpointCache, 'aws-sdk-core/endpoint_cache'
67
+
68
+ autoload :Telemetry, 'aws-sdk-core/telemetry'
69
+
70
+ # utilities
71
+ autoload :ARN, 'aws-sdk-core/arn'
72
+ autoload :ARNParser, 'aws-sdk-core/arn_parser'
73
+ autoload :EC2Metadata, 'aws-sdk-core/ec2_metadata'
74
+ autoload :LRUCache, 'aws-sdk-core/lru_cache'
75
+
76
+ # dynamic endpoints
77
+ autoload :Endpoints, 'aws-sdk-core/endpoints'
78
+
79
+ CORE_GEM_VERSION = File.read(File.expand_path('../VERSION', __dir__)).strip
120
80
 
121
81
  @config = {}
122
82
 
@@ -200,3 +160,18 @@ module Aws
200
160
 
201
161
  end
202
162
  end
163
+
164
+ # Setup additional autoloads/modules
165
+ require_relative 'aws-sdk-core/client_side_monitoring'
166
+ require_relative 'aws-sdk-core/log'
167
+ require_relative 'aws-sdk-core/plugins'
168
+ require_relative 'aws-sdk-core/resources'
169
+ require_relative 'aws-sdk-core/stubbing'
170
+ require_relative 'aws-sdk-core/waiters'
171
+
172
+ # aws-sdk-sts is included to support Aws::AssumeRoleCredentials
173
+ require_relative 'aws-sdk-sts'
174
+
175
+ # aws-sdk-sso is included to support Aws::SSOCredentials
176
+ require_relative 'aws-sdk-sso'
177
+ require_relative 'aws-sdk-ssooidc'