aws-sdk-core 3.191.1 → 3.229.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 +539 -1
- data/VERSION +1 -1
- data/lib/aws-defaults/default_configuration.rb +1 -2
- data/lib/aws-defaults.rb +4 -1
- data/lib/aws-sdk-core/arn.rb +1 -3
- data/lib/aws-sdk-core/assume_role_credentials.rb +13 -5
- data/lib/aws-sdk-core/assume_role_web_identity_credentials.rb +14 -7
- data/lib/aws-sdk-core/binary/decode_handler.rb +3 -9
- data/lib/aws-sdk-core/binary/encode_handler.rb +1 -1
- data/lib/aws-sdk-core/binary/event_builder.rb +34 -37
- data/lib/aws-sdk-core/binary/event_stream_decoder.rb +1 -0
- data/lib/aws-sdk-core/binary/event_stream_encoder.rb +4 -3
- data/lib/aws-sdk-core/cbor/decoder.rb +308 -0
- data/lib/aws-sdk-core/cbor/encoder.rb +243 -0
- data/lib/aws-sdk-core/cbor.rb +53 -0
- data/lib/aws-sdk-core/client_side_monitoring.rb +9 -0
- data/lib/aws-sdk-core/client_stubs.rb +30 -55
- data/lib/aws-sdk-core/credential_provider.rb +4 -0
- data/lib/aws-sdk-core/credential_provider_chain.rb +38 -11
- data/lib/aws-sdk-core/credentials.rb +19 -6
- data/lib/aws-sdk-core/ec2_metadata.rb +1 -1
- data/lib/aws-sdk-core/ecs_credentials.rb +1 -0
- data/lib/aws-sdk-core/endpoints/endpoint.rb +3 -1
- data/lib/aws-sdk-core/endpoints/matchers.rb +8 -10
- data/lib/aws-sdk-core/endpoints.rb +101 -21
- data/lib/aws-sdk-core/error_handler.rb +46 -0
- data/lib/aws-sdk-core/errors.rb +11 -2
- data/lib/aws-sdk-core/event_emitter.rb +1 -17
- data/lib/aws-sdk-core/instance_profile_credentials.rb +148 -158
- data/lib/aws-sdk-core/json/builder.rb +8 -1
- data/lib/aws-sdk-core/json/error_handler.rb +29 -13
- data/lib/aws-sdk-core/json/handler.rb +6 -6
- data/lib/aws-sdk-core/json/json_engine.rb +3 -1
- data/lib/aws-sdk-core/json/oj_engine.rb +7 -1
- data/lib/aws-sdk-core/json/parser.rb +6 -1
- data/lib/aws-sdk-core/json.rb +43 -14
- data/lib/aws-sdk-core/log/param_filter.rb +2 -2
- data/lib/aws-sdk-core/log/param_formatter.rb +7 -3
- data/lib/aws-sdk-core/log.rb +10 -0
- data/lib/aws-sdk-core/lru_cache.rb +75 -0
- data/lib/aws-sdk-core/pageable_response.rb +1 -1
- data/lib/aws-sdk-core/param_validator.rb +7 -2
- data/lib/aws-sdk-core/plugins/bearer_authorization.rb +2 -0
- data/lib/aws-sdk-core/plugins/checksum_algorithm.rb +332 -169
- data/lib/aws-sdk-core/plugins/client_metrics_plugin.rb +0 -1
- data/lib/aws-sdk-core/plugins/client_metrics_send_plugin.rb +14 -2
- data/lib/aws-sdk-core/plugins/credentials_configuration.rb +77 -57
- data/lib/aws-sdk-core/plugins/endpoint_pattern.rb +40 -32
- data/lib/aws-sdk-core/plugins/global_configuration.rb +8 -9
- data/lib/aws-sdk-core/plugins/http_checksum.rb +2 -8
- data/lib/aws-sdk-core/plugins/invocation_id.rb +1 -11
- data/lib/aws-sdk-core/plugins/protocols/api_gateway.rb +3 -1
- data/lib/aws-sdk-core/plugins/protocols/ec2.rb +2 -24
- data/lib/aws-sdk-core/plugins/protocols/json_rpc.rb +6 -8
- data/lib/aws-sdk-core/plugins/protocols/query.rb +4 -2
- data/lib/aws-sdk-core/plugins/protocols/rest_json.rb +3 -15
- data/lib/aws-sdk-core/plugins/protocols/rest_xml.rb +3 -0
- data/lib/aws-sdk-core/plugins/protocols/rpc_v2.rb +17 -0
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +74 -25
- data/lib/aws-sdk-core/plugins/request_compression.rb +11 -2
- data/lib/aws-sdk-core/plugins/retry_errors.rb +10 -3
- data/lib/aws-sdk-core/plugins/sign.rb +42 -26
- data/lib/aws-sdk-core/plugins/signature_v2.rb +2 -1
- data/lib/aws-sdk-core/plugins/signature_v4.rb +2 -1
- data/lib/aws-sdk-core/plugins/stub_responses.rb +58 -9
- data/lib/aws-sdk-core/plugins/telemetry.rb +75 -0
- data/lib/aws-sdk-core/plugins/transfer_encoding.rb +16 -9
- data/lib/aws-sdk-core/plugins/user_agent.rb +101 -26
- data/lib/aws-sdk-core/plugins.rb +39 -0
- data/lib/aws-sdk-core/process_credentials.rb +48 -29
- data/lib/aws-sdk-core/query/ec2_handler.rb +27 -0
- data/lib/aws-sdk-core/query/ec2_param_builder.rb +5 -7
- data/lib/aws-sdk-core/query/handler.rb +4 -4
- data/lib/aws-sdk-core/query/param_builder.rb +2 -2
- data/lib/aws-sdk-core/query.rb +2 -1
- data/lib/aws-sdk-core/resources.rb +8 -0
- data/lib/aws-sdk-core/rest/content_type_handler.rb +60 -0
- data/lib/aws-sdk-core/rest/handler.rb +3 -4
- data/lib/aws-sdk-core/rest/request/body.rb +32 -5
- data/lib/aws-sdk-core/rest/request/endpoint.rb +24 -4
- data/lib/aws-sdk-core/rest/request/headers.rb +15 -7
- data/lib/aws-sdk-core/rest/request/querystring_builder.rb +23 -11
- data/lib/aws-sdk-core/rest/response/body.rb +15 -1
- data/lib/aws-sdk-core/rest/response/header_list_parser.rb +79 -0
- data/lib/aws-sdk-core/rest/response/headers.rb +8 -3
- data/lib/aws-sdk-core/rest.rb +1 -0
- data/lib/aws-sdk-core/rpc_v2/builder.rb +62 -0
- data/lib/aws-sdk-core/rpc_v2/cbor_engine.rb +18 -0
- data/lib/aws-sdk-core/rpc_v2/content_type_handler.rb +47 -0
- data/lib/aws-sdk-core/rpc_v2/error_handler.rb +95 -0
- data/lib/aws-sdk-core/rpc_v2/handler.rb +79 -0
- data/lib/aws-sdk-core/rpc_v2/parser.rb +98 -0
- data/lib/aws-sdk-core/rpc_v2.rb +69 -0
- data/lib/aws-sdk-core/shared_config.rb +79 -22
- data/lib/aws-sdk-core/shared_credentials.rb +1 -7
- data/lib/aws-sdk-core/sso_credentials.rb +4 -1
- data/lib/aws-sdk-core/static_token_provider.rb +1 -2
- data/lib/aws-sdk-core/stubbing/protocols/ec2.rb +12 -11
- data/lib/aws-sdk-core/stubbing/protocols/json.rb +11 -10
- data/lib/aws-sdk-core/stubbing/protocols/query.rb +7 -6
- data/lib/aws-sdk-core/stubbing/protocols/rest.rb +2 -1
- data/lib/aws-sdk-core/stubbing/protocols/rest_json.rb +9 -8
- data/lib/aws-sdk-core/stubbing/protocols/rest_xml.rb +6 -5
- data/lib/aws-sdk-core/stubbing/protocols/rpc_v2.rb +39 -0
- data/lib/aws-sdk-core/stubbing.rb +22 -0
- data/lib/aws-sdk-core/telemetry/base.rb +177 -0
- data/lib/aws-sdk-core/telemetry/no_op.rb +70 -0
- data/lib/aws-sdk-core/telemetry/otel.rb +235 -0
- data/lib/aws-sdk-core/telemetry/span_kind.rb +22 -0
- data/lib/aws-sdk-core/telemetry/span_status.rb +59 -0
- data/lib/aws-sdk-core/telemetry.rb +78 -0
- data/lib/aws-sdk-core/token.rb +3 -3
- data/lib/aws-sdk-core/token_provider.rb +4 -0
- data/lib/aws-sdk-core/token_provider_chain.rb +2 -6
- data/lib/aws-sdk-core/util.rb +41 -1
- data/lib/aws-sdk-core/waiters/poller.rb +10 -5
- data/lib/aws-sdk-core/xml/builder.rb +17 -9
- data/lib/aws-sdk-core/xml/error_handler.rb +35 -43
- data/lib/aws-sdk-core/xml/parser/frame.rb +4 -20
- data/lib/aws-sdk-core/xml/parser/stack.rb +2 -0
- data/lib/aws-sdk-core/xml/parser.rb +2 -6
- data/lib/aws-sdk-core.rb +82 -107
- data/lib/aws-sdk-sso/client.rb +189 -96
- data/lib/aws-sdk-sso/client_api.rb +7 -0
- data/lib/aws-sdk-sso/endpoint_parameters.rb +9 -6
- data/lib/aws-sdk-sso/endpoint_provider.rb +14 -18
- data/lib/aws-sdk-sso/endpoints.rb +2 -54
- data/lib/aws-sdk-sso/plugins/endpoints.rb +19 -20
- data/lib/aws-sdk-sso/types.rb +1 -0
- data/lib/aws-sdk-sso.rb +15 -11
- data/lib/aws-sdk-ssooidc/client.rb +274 -116
- data/lib/aws-sdk-ssooidc/client_api.rb +33 -0
- data/lib/aws-sdk-ssooidc/endpoint_parameters.rb +9 -6
- data/lib/aws-sdk-ssooidc/endpoint_provider.rb +14 -18
- data/lib/aws-sdk-ssooidc/endpoints.rb +2 -54
- data/lib/aws-sdk-ssooidc/errors.rb +21 -0
- data/lib/aws-sdk-ssooidc/plugins/endpoints.rb +19 -20
- data/lib/aws-sdk-ssooidc/types.rb +125 -24
- data/lib/aws-sdk-ssooidc.rb +15 -11
- data/lib/aws-sdk-sts/client.rb +397 -148
- data/lib/aws-sdk-sts/client_api.rb +36 -8
- data/lib/aws-sdk-sts/customizations.rb +5 -1
- data/lib/aws-sdk-sts/endpoint_parameters.rb +10 -9
- data/lib/aws-sdk-sts/endpoint_provider.rb +50 -55
- data/lib/aws-sdk-sts/endpoints.rb +2 -118
- data/lib/aws-sdk-sts/errors.rb +15 -0
- data/lib/aws-sdk-sts/plugins/endpoints.rb +19 -28
- data/lib/aws-sdk-sts/presigner.rb +2 -6
- data/lib/aws-sdk-sts/types.rb +171 -28
- data/lib/aws-sdk-sts.rb +15 -11
- data/lib/seahorse/client/async_base.rb +4 -5
- data/lib/seahorse/client/async_response.rb +19 -0
- data/lib/seahorse/client/base.rb +18 -21
- data/lib/seahorse/client/h2/connection.rb +18 -28
- data/lib/seahorse/client/h2/handler.rb +14 -3
- data/lib/seahorse/client/handler.rb +1 -1
- data/lib/seahorse/client/http/response.rb +1 -1
- data/lib/seahorse/client/net_http/connection_pool.rb +15 -12
- data/lib/seahorse/client/net_http/handler.rb +21 -9
- data/lib/seahorse/client/networking_error.rb +1 -1
- data/lib/seahorse/client/plugin.rb +8 -0
- data/lib/seahorse/client/plugins/endpoint.rb +0 -1
- data/lib/seahorse/client/plugins/h2.rb +4 -4
- data/lib/seahorse/client/plugins/net_http.rb +57 -16
- data/lib/seahorse/client/request_context.rb +9 -2
- data/lib/seahorse/client/response.rb +2 -0
- data/lib/seahorse/model/shapes.rb +2 -2
- data/lib/seahorse/util.rb +2 -1
- data/sig/aws-sdk-core/async_client_stubs.rbs +21 -0
- data/sig/aws-sdk-core/telemetry/base.rbs +46 -0
- data/sig/aws-sdk-core/telemetry/otel.rbs +22 -0
- data/sig/aws-sdk-core/telemetry/span_kind.rbs +15 -0
- data/sig/aws-sdk-core/telemetry/span_status.rbs +24 -0
- data/sig/seahorse/client/async_base.rbs +18 -0
- metadata +96 -23
- /data/lib/aws-sdk-core/xml/parser/{engines/libxml.rb → libxml_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/nokogiri.rb → nokogiri_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/oga.rb → oga_engine.rb} +0 -0
- /data/lib/aws-sdk-core/xml/parser/{engines/ox.rb → ox_engine.rb} +0 -0
- /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
|
3
|
+
require "cgi/escape"
|
4
|
+
require "cgi/util" if RUBY_VERSION < "3.5"
|
4
5
|
|
5
6
|
module Aws
|
6
7
|
module Endpoints
|
@@ -28,7 +29,11 @@ module Aws
|
|
28
29
|
|
29
30
|
val = if (index = parts.first[BRACKET_REGEX, 1])
|
30
31
|
# remove brackets and index from part before indexing
|
31
|
-
|
32
|
+
if (base = parts.first.gsub(BRACKET_REGEX, '')) && !base.empty?
|
33
|
+
value[base][index.to_i]
|
34
|
+
else
|
35
|
+
value[index.to_i]
|
36
|
+
end
|
32
37
|
else
|
33
38
|
value[parts.first]
|
34
39
|
end
|
@@ -90,14 +95,7 @@ module Aws
|
|
90
95
|
|
91
96
|
# aws.partition(value: string) Option<Partition>
|
92
97
|
def self.aws_partition(value)
|
93
|
-
partition
|
94
|
-
Aws::Partitions.find { |p| p.region?(value) } ||
|
95
|
-
Aws::Partitions.find { |p| value.match(p.region_regex) } ||
|
96
|
-
Aws::Partitions.find { |p| p.name == 'aws' }
|
97
|
-
|
98
|
-
return nil unless partition
|
99
|
-
|
100
|
-
partition.metadata
|
98
|
+
Aws::Partitions::Metadata.partition(value)
|
101
99
|
end
|
102
100
|
|
103
101
|
# aws.parseArn(value: string) Option<ARN>
|
@@ -14,15 +14,33 @@ require_relative 'endpoints/templater'
|
|
14
14
|
require_relative 'endpoints/tree_rule'
|
15
15
|
require_relative 'endpoints/url'
|
16
16
|
|
17
|
+
require 'aws-sigv4'
|
18
|
+
|
17
19
|
module Aws
|
18
20
|
# @api private
|
19
21
|
module Endpoints
|
22
|
+
# Maps config auth scheme preferences to endpoint auth scheme names.
|
23
|
+
ENDPOINT_AUTH_PREFERENCE_MAP = {
|
24
|
+
'sigv4' => %w[sigv4 sigv4-s3express],
|
25
|
+
'sigv4a' => ['sigv4a'],
|
26
|
+
'httpBearerAuth' => ['bearer'],
|
27
|
+
'noAuth' => ['none']
|
28
|
+
}.freeze
|
29
|
+
SUPPORTED_ENDPOINT_AUTH = ENDPOINT_AUTH_PREFERENCE_MAP.values.flatten.freeze
|
30
|
+
|
31
|
+
# Maps configured auth scheme preferences to modeled auth traits.
|
32
|
+
MODELED_AUTH_PREFERENCE_MAP = {
|
33
|
+
'sigv4' => 'aws.auth#sigv4',
|
34
|
+
'sigv4a' => 'aws.auth#sigv4a',
|
35
|
+
'httpBearerAuth' => 'smithy.api#httpBearerAuth',
|
36
|
+
'noAuth' => 'smithy.api#noAuth'
|
37
|
+
}.freeze
|
38
|
+
SUPPORTED_MODELED_AUTH = MODELED_AUTH_PREFERENCE_MAP.values.freeze
|
39
|
+
|
20
40
|
class << self
|
21
41
|
def resolve_auth_scheme(context, endpoint)
|
22
42
|
if endpoint && (auth_schemes = endpoint.properties['authSchemes'])
|
23
|
-
auth_scheme = auth_schemes.
|
24
|
-
Aws::Plugins::Sign::SUPPORTED_AUTH_TYPES.include?(scheme['name'])
|
25
|
-
end
|
43
|
+
auth_scheme = endpoint_auth_scheme_preference(auth_schemes, context.config.auth_scheme_preference)
|
26
44
|
raise 'No supported auth scheme for this endpoint.' unless auth_scheme
|
27
45
|
|
28
46
|
merge_signing_defaults(auth_scheme, context.config)
|
@@ -33,8 +51,86 @@ module Aws
|
|
33
51
|
|
34
52
|
private
|
35
53
|
|
54
|
+
def endpoint_auth_scheme_preference(auth_schemes, preferred_auth)
|
55
|
+
ordered_auth = preferred_auth.each_with_object([]) do |pref, list|
|
56
|
+
next unless ENDPOINT_AUTH_PREFERENCE_MAP.key?(pref)
|
57
|
+
|
58
|
+
ENDPOINT_AUTH_PREFERENCE_MAP[pref].each { |name| list << { 'name' => name } }
|
59
|
+
end
|
60
|
+
ordered_auth += auth_schemes
|
61
|
+
ordered_auth.find { |auth| SUPPORTED_ENDPOINT_AUTH.include?(auth['name']) }
|
62
|
+
end
|
63
|
+
|
64
|
+
def merge_signing_defaults(auth_scheme, config)
|
65
|
+
if %w[sigv4 sigv4a sigv4-s3express].include?(auth_scheme['name'])
|
66
|
+
auth_scheme['signingName'] ||= sigv4_name(config)
|
67
|
+
|
68
|
+
# back fill disableNormalizePath for S3 until it gets correctly set in the rules
|
69
|
+
if auth_scheme['signingName'] == 's3' &&
|
70
|
+
!auth_scheme.include?('disableNormalizePath') &&
|
71
|
+
auth_scheme.include?('disableDoubleEncoding')
|
72
|
+
auth_scheme['disableNormalizePath'] = auth_scheme['disableDoubleEncoding']
|
73
|
+
end
|
74
|
+
if auth_scheme['name'] == 'sigv4a'
|
75
|
+
# config option supersedes endpoint properties
|
76
|
+
auth_scheme['signingRegionSet'] =
|
77
|
+
config.sigv4a_signing_region_set || auth_scheme['signingRegionSet'] || [config.region]
|
78
|
+
else
|
79
|
+
auth_scheme['signingRegion'] ||= config.region
|
80
|
+
end
|
81
|
+
end
|
82
|
+
auth_scheme
|
83
|
+
end
|
84
|
+
|
85
|
+
def sigv4_name(config)
|
86
|
+
config.api.metadata['signingName'] || config.api.metadata['endpointPrefix']
|
87
|
+
end
|
88
|
+
|
36
89
|
def default_auth_scheme(context)
|
37
|
-
|
90
|
+
if (modeled_auth = default_api_auth(context))
|
91
|
+
auth = modeled_auth_scheme_preference(modeled_auth, context.config.auth_scheme_preference)
|
92
|
+
case auth
|
93
|
+
when 'aws.auth#sigv4', 'aws.auth#sigv4a'
|
94
|
+
auth_scheme = { 'name' => auth.split('#').last }
|
95
|
+
if s3_or_s3v4_signature_version?(context)
|
96
|
+
auth_scheme = auth_scheme.merge(
|
97
|
+
'disableDoubleEncoding' => true,
|
98
|
+
'disableNormalizePath' => true
|
99
|
+
)
|
100
|
+
end
|
101
|
+
merge_signing_defaults(auth_scheme, context.config)
|
102
|
+
when 'smithy.api#httpBearerAuth'
|
103
|
+
{ 'name' => 'bearer' }
|
104
|
+
when 'smithy.api#noAuth'
|
105
|
+
{ 'name' => 'none' }
|
106
|
+
else
|
107
|
+
raise 'No supported auth trait for this endpoint.'
|
108
|
+
end
|
109
|
+
else
|
110
|
+
legacy_default_auth_scheme(context)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def modeled_auth_scheme_preference(modeled_auth, preferred_auth)
|
115
|
+
ordered_auth = preferred_auth.map { |pref| MODELED_AUTH_PREFERENCE_MAP[pref] }.compact
|
116
|
+
ordered_auth += modeled_auth
|
117
|
+
ordered_auth.find { |auth| SUPPORTED_MODELED_AUTH.include?(auth) }
|
118
|
+
end
|
119
|
+
|
120
|
+
def default_api_auth(context)
|
121
|
+
context.config.api.operation(context.operation_name)['auth'] ||
|
122
|
+
context.config.api.metadata['auth']
|
123
|
+
end
|
124
|
+
|
125
|
+
def s3_or_s3v4_signature_version?(context)
|
126
|
+
%w[s3 s3v4].include?(context.config.api.metadata['signatureVersion'])
|
127
|
+
end
|
128
|
+
|
129
|
+
# Legacy auth resolution - looks for deprecated signatureVersion
|
130
|
+
# and authType traits.
|
131
|
+
|
132
|
+
def legacy_default_auth_scheme(context)
|
133
|
+
case legacy_default_api_authtype(context)
|
38
134
|
when 'v4', 'v4-unsigned-body'
|
39
135
|
auth_scheme = { 'name' => 'sigv4' }
|
40
136
|
merge_signing_defaults(auth_scheme, context.config)
|
@@ -52,27 +148,11 @@ module Aws
|
|
52
148
|
end
|
53
149
|
end
|
54
150
|
|
55
|
-
def
|
56
|
-
if %w[sigv4 sigv4a sigv4-s3express].include?(auth_scheme['name'])
|
57
|
-
auth_scheme['signingName'] ||= sigv4_name(config)
|
58
|
-
if auth_scheme['name'] == 'sigv4a'
|
59
|
-
auth_scheme['signingRegionSet'] ||= ['*']
|
60
|
-
else
|
61
|
-
auth_scheme['signingRegion'] ||= config.region
|
62
|
-
end
|
63
|
-
end
|
64
|
-
auth_scheme
|
65
|
-
end
|
66
|
-
|
67
|
-
def default_api_authtype(context)
|
151
|
+
def legacy_default_api_authtype(context)
|
68
152
|
context.config.api.operation(context.operation_name)['authtype'] ||
|
69
153
|
context.config.api.metadata['signatureVersion']
|
70
154
|
end
|
71
155
|
|
72
|
-
def sigv4_name(config)
|
73
|
-
config.api.metadata['signingName'] ||
|
74
|
-
config.api.metadata['endpointPrefix']
|
75
|
-
end
|
76
156
|
end
|
77
157
|
end
|
78
158
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
# @api private
|
5
|
+
class ErrorHandler < Seahorse::Client::Handler
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def error(context)
|
10
|
+
body = context.http_response.body_contents
|
11
|
+
# This is not correct per protocol tests. Some headers will determine the error code.
|
12
|
+
# If the body is empty, there is still potentially an error code from the header, but
|
13
|
+
# we are making a generic http status error instead. In a new major version, we should
|
14
|
+
# always try to extract header, and during extraction, check headers and body.
|
15
|
+
if body.empty?
|
16
|
+
code, message, data = http_status_error(context)
|
17
|
+
else
|
18
|
+
code, message, data = extract_error(body, context)
|
19
|
+
end
|
20
|
+
build_error(context, code, message, data)
|
21
|
+
end
|
22
|
+
|
23
|
+
def build_error(context, code, message, data)
|
24
|
+
errors_module = context.client.class.errors_module
|
25
|
+
errors_module.error_class(code).new(context, message, data)
|
26
|
+
end
|
27
|
+
|
28
|
+
def http_status_error(context)
|
29
|
+
[http_status_error_code(context), '', EmptyStructure.new]
|
30
|
+
end
|
31
|
+
|
32
|
+
def http_status_error_code(context)
|
33
|
+
status_code = context.http_response.status_code
|
34
|
+
{
|
35
|
+
302 => 'MovedTemporarily',
|
36
|
+
304 => 'NotModified',
|
37
|
+
400 => 'BadRequest',
|
38
|
+
403 => 'Forbidden',
|
39
|
+
404 => 'NotFound',
|
40
|
+
412 => 'PreconditionFailed',
|
41
|
+
413 => 'RequestEntityTooLarge',
|
42
|
+
}[status_code] || "Http#{status_code}Error"
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
data/lib/aws-sdk-core/errors.rb
CHANGED
@@ -68,7 +68,7 @@ module Aws
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
#
|
71
|
+
# Raised when endpoint discovery failed for operations
|
72
72
|
# that requires endpoints from endpoint discovery
|
73
73
|
class EndpointDiscoveryError < RuntimeError
|
74
74
|
def initialize(*args)
|
@@ -78,7 +78,7 @@ module Aws
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
#
|
81
|
+
# Raised when hostLabel member is not provided
|
82
82
|
# at operation input when endpoint trait is available
|
83
83
|
# with 'hostPrefix' requirement
|
84
84
|
class MissingEndpointHostLabelValue < RuntimeError
|
@@ -236,6 +236,15 @@ module Aws
|
|
236
236
|
end
|
237
237
|
end
|
238
238
|
|
239
|
+
# Raised when a client is constructed and the sigv4a region set is invalid.
|
240
|
+
# It is invalid when it is empty and/or contains empty strings.
|
241
|
+
class InvalidRegionSetError < ArgumentError
|
242
|
+
def initialize(*args)
|
243
|
+
msg = 'The provided sigv4a region set was empty or invalid.'
|
244
|
+
super(msg)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
239
248
|
# Raised when a client is contsructed and the region is not valid.
|
240
249
|
class InvalidRegionError < ArgumentError
|
241
250
|
def initialize(*args)
|
@@ -6,7 +6,6 @@ module Aws
|
|
6
6
|
def initialize
|
7
7
|
@listeners = {}
|
8
8
|
@validate_event = true
|
9
|
-
@status = :sleep
|
10
9
|
@signal_queue = Queue.new
|
11
10
|
end
|
12
11
|
|
@@ -32,7 +31,7 @@ module Aws
|
|
32
31
|
def emit(type, params)
|
33
32
|
unless @stream
|
34
33
|
raise Aws::Errors::SignalEventError.new(
|
35
|
-
"
|
34
|
+
"Signaling events before making async request"\
|
36
35
|
" is not allowed."
|
37
36
|
)
|
38
37
|
end
|
@@ -40,25 +39,10 @@ module Aws
|
|
40
39
|
Aws::ParamValidator.validate!(
|
41
40
|
@encoder.rules.shape.member(type), params)
|
42
41
|
end
|
43
|
-
_ready_for_events?
|
44
42
|
@stream.data(
|
45
43
|
@encoder.encode(type, params),
|
46
44
|
end_stream: type == :end_stream
|
47
45
|
)
|
48
46
|
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def _ready_for_events?
|
53
|
-
return true if @status == :ready
|
54
|
-
|
55
|
-
# blocked until once initial 200 response is received
|
56
|
-
# signal will be available in @signal_queue
|
57
|
-
# and this check will no longer be blocked
|
58
|
-
@signal_queue.pop
|
59
|
-
@status = :ready
|
60
|
-
true
|
61
|
-
end
|
62
|
-
|
63
47
|
end
|
64
48
|
end
|