Skip to content

Commit 49bcc4f

Browse files
authored
feat(clients): fallback to status code for unmodeled errors (#3752)
* chore(codegen): parseErrorCode returns optional string * feat(clients): fallback to status code for unmodeled errors
1 parent c59b7f5 commit 49bcc4f

File tree

320 files changed

+59514
-48290
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

320 files changed

+59514
-48290
lines changed

clients/client-accessanalyzer/src/protocols/Aws_restJson1.ts

Lines changed: 141 additions & 115 deletions
Large diffs are not rendered by default.

clients/client-account/src/protocols/Aws_restJson1.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ const deserializeAws_restJson1DeleteAlternateContactCommandError = async (
140140
body: await parseBody(output.body, context),
141141
};
142142
let response: __BaseException;
143-
let errorCode = "UnknownError";
144-
errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
143+
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
145144
switch (errorCode) {
146145
case "AccessDeniedException":
147146
case "com.amazonaws.account#AccessDeniedException":
@@ -160,10 +159,12 @@ const deserializeAws_restJson1DeleteAlternateContactCommandError = async (
160159
throw await deserializeAws_restJson1ValidationExceptionResponse(parsedOutput, context);
161160
default:
162161
const parsedBody = parsedOutput.body;
162+
const $metadata = deserializeMetadata(output);
163+
const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : undefined;
163164
response = new __BaseException({
164-
name: parsedBody.code || parsedBody.Code || errorCode,
165+
name: parsedBody.code || parsedBody.Code || errorCode || statusCode || "UnknowError",
165166
$fault: "client",
166-
$metadata: deserializeMetadata(output),
167+
$metadata,
167168
});
168169
throw __decorateServiceException(response, parsedBody);
169170
}
@@ -196,8 +197,7 @@ const deserializeAws_restJson1GetAlternateContactCommandError = async (
196197
body: await parseBody(output.body, context),
197198
};
198199
let response: __BaseException;
199-
let errorCode = "UnknownError";
200-
errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
200+
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
201201
switch (errorCode) {
202202
case "AccessDeniedException":
203203
case "com.amazonaws.account#AccessDeniedException":
@@ -216,10 +216,12 @@ const deserializeAws_restJson1GetAlternateContactCommandError = async (
216216
throw await deserializeAws_restJson1ValidationExceptionResponse(parsedOutput, context);
217217
default:
218218
const parsedBody = parsedOutput.body;
219+
const $metadata = deserializeMetadata(output);
220+
const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : undefined;
219221
response = new __BaseException({
220-
name: parsedBody.code || parsedBody.Code || errorCode,
222+
name: parsedBody.code || parsedBody.Code || errorCode || statusCode || "UnknowError",
221223
$fault: "client",
222-
$metadata: deserializeMetadata(output),
224+
$metadata,
223225
});
224226
throw __decorateServiceException(response, parsedBody);
225227
}
@@ -248,8 +250,7 @@ const deserializeAws_restJson1PutAlternateContactCommandError = async (
248250
body: await parseBody(output.body, context),
249251
};
250252
let response: __BaseException;
251-
let errorCode = "UnknownError";
252-
errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
253+
const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
253254
switch (errorCode) {
254255
case "AccessDeniedException":
255256
case "com.amazonaws.account#AccessDeniedException":
@@ -265,10 +266,12 @@ const deserializeAws_restJson1PutAlternateContactCommandError = async (
265266
throw await deserializeAws_restJson1ValidationExceptionResponse(parsedOutput, context);
266267
default:
267268
const parsedBody = parsedOutput.body;
269+
const $metadata = deserializeMetadata(output);
270+
const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : undefined;
268271
response = new __BaseException({
269-
name: parsedBody.code || parsedBody.Code || errorCode,
272+
name: parsedBody.code || parsedBody.Code || errorCode || statusCode || "UnknowError",
270273
$fault: "client",
271-
$metadata: deserializeMetadata(output),
274+
$metadata,
272275
});
273276
throw __decorateServiceException(response, parsedBody);
274277
}
@@ -401,7 +404,7 @@ const parseBody = (streamBody: any, context: __SerdeContext): any =>
401404
/**
402405
* Load an error code for the aws.rest-json-1.1 protocol.
403406
*/
404-
const loadRestJsonErrorCode = (output: __HttpResponse, data: any): string => {
407+
const loadRestJsonErrorCode = (output: __HttpResponse, data: any): string | undefined => {
405408
const findKey = (object: any, key: string) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());
406409

407410
const sanitizeErrorCode = (rawValue: string): string => {
@@ -427,6 +430,4 @@ const loadRestJsonErrorCode = (output: __HttpResponse, data: any): string => {
427430
if (data["__type"] !== undefined) {
428431
return sanitizeErrorCode(data["__type"]);
429432
}
430-
431-
return "";
432433
};

0 commit comments

Comments
 (0)