clients/client-notificationscontacts/src/protocols/Aws_restJson1.ts (500 lines of code) (raw):

// smithy-typescript generated code import { loadRestJsonErrorCode, parseJsonBody as parseBody, parseJsonErrorBody as parseErrorBody } from "@aws-sdk/core"; import { requestBuilder as rb } from "@smithy/core"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; import { _json, collectBody, decorateServiceException as __decorateServiceException, expectNonNull as __expectNonNull, expectObject as __expectObject, expectString as __expectString, extendedEncodeURIComponent as __extendedEncodeURIComponent, map, parseRfc3339DateTimeWithOffset as __parseRfc3339DateTimeWithOffset, resolvedPath as __resolvedPath, strictParseInt32 as __strictParseInt32, take, withBaseException, } from "@smithy/smithy-client"; import { Endpoint as __Endpoint, ResponseMetadata as __ResponseMetadata, SerdeContext as __SerdeContext, } from "@smithy/types"; import { ActivateEmailContactCommandInput, ActivateEmailContactCommandOutput, } from "../commands/ActivateEmailContactCommand"; import { CreateEmailContactCommandInput, CreateEmailContactCommandOutput } from "../commands/CreateEmailContactCommand"; import { DeleteEmailContactCommandInput, DeleteEmailContactCommandOutput } from "../commands/DeleteEmailContactCommand"; import { GetEmailContactCommandInput, GetEmailContactCommandOutput } from "../commands/GetEmailContactCommand"; import { ListEmailContactsCommandInput, ListEmailContactsCommandOutput } from "../commands/ListEmailContactsCommand"; import { ListTagsForResourceCommandInput, ListTagsForResourceCommandOutput, } from "../commands/ListTagsForResourceCommand"; import { SendActivationCodeCommandInput, SendActivationCodeCommandOutput } from "../commands/SendActivationCodeCommand"; import { TagResourceCommandInput, TagResourceCommandOutput } from "../commands/TagResourceCommand"; import { UntagResourceCommandInput, UntagResourceCommandOutput } from "../commands/UntagResourceCommand"; import { AccessDeniedException, ConflictException, EmailContact, InternalServerException, ResourceNotFoundException, ServiceQuotaExceededException, ThrottlingException, ValidationException, } from "../models/models_0"; import { NotificationsContactsServiceException as __BaseException } from "../models/NotificationsContactsServiceException"; /** * serializeAws_restJson1ActivateEmailContactCommand */ export const se_ActivateEmailContactCommand = async ( input: ActivateEmailContactCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = {}; b.bp("/emailcontacts/{arn}/activate/{code}"); b.p("arn", () => input.arn!, "{arn}", false); b.p("code", () => input.code!, "{code}", false); let body: any; b.m("PUT").h(headers).b(body); return b.build(); }; /** * serializeAws_restJson1CreateEmailContactCommand */ export const se_CreateEmailContactCommand = async ( input: CreateEmailContactCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = { "content-type": "application/json", }; b.bp("/2022-09-19/emailcontacts"); let body: any; body = JSON.stringify( take(input, { emailAddress: [], name: [], tags: (_) => _json(_), }) ); b.m("POST").h(headers).b(body); return b.build(); }; /** * serializeAws_restJson1DeleteEmailContactCommand */ export const se_DeleteEmailContactCommand = async ( input: DeleteEmailContactCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = {}; b.bp("/emailcontacts/{arn}"); b.p("arn", () => input.arn!, "{arn}", false); let body: any; b.m("DELETE").h(headers).b(body); return b.build(); }; /** * serializeAws_restJson1GetEmailContactCommand */ export const se_GetEmailContactCommand = async ( input: GetEmailContactCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = {}; b.bp("/emailcontacts/{arn}"); b.p("arn", () => input.arn!, "{arn}", false); let body: any; b.m("GET").h(headers).b(body); return b.build(); }; /** * serializeAws_restJson1ListEmailContactsCommand */ export const se_ListEmailContactsCommand = async ( input: ListEmailContactsCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = {}; b.bp("/emailcontacts"); const query: any = map({ [_mR]: [() => input.maxResults !== void 0, () => input[_mR]!.toString()], [_nT]: [, input[_nT]!], }); let body: any; b.m("GET").h(headers).q(query).b(body); return b.build(); }; /** * serializeAws_restJson1ListTagsForResourceCommand */ export const se_ListTagsForResourceCommand = async ( input: ListTagsForResourceCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = {}; b.bp("/tags/{arn}"); b.p("arn", () => input.arn!, "{arn}", false); let body: any; b.m("GET").h(headers).b(body); return b.build(); }; /** * serializeAws_restJson1SendActivationCodeCommand */ export const se_SendActivationCodeCommand = async ( input: SendActivationCodeCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = {}; b.bp("/2022-10-31/emailcontacts/{arn}/activate/send"); b.p("arn", () => input.arn!, "{arn}", false); let body: any; b.m("POST").h(headers).b(body); return b.build(); }; /** * serializeAws_restJson1TagResourceCommand */ export const se_TagResourceCommand = async ( input: TagResourceCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = { "content-type": "application/json", }; b.bp("/tags/{arn}"); b.p("arn", () => input.arn!, "{arn}", false); let body: any; body = JSON.stringify( take(input, { tags: (_) => _json(_), }) ); b.m("POST").h(headers).b(body); return b.build(); }; /** * serializeAws_restJson1UntagResourceCommand */ export const se_UntagResourceCommand = async ( input: UntagResourceCommandInput, context: __SerdeContext ): Promise<__HttpRequest> => { const b = rb(input, context); const headers: any = {}; b.bp("/tags/{arn}"); b.p("arn", () => input.arn!, "{arn}", false); const query: any = map({ [_tK]: [__expectNonNull(input.tagKeys, `tagKeys`) != null, () => input[_tK]! || []], }); let body: any; b.m("DELETE").h(headers).q(query).b(body); return b.build(); }; /** * deserializeAws_restJson1ActivateEmailContactCommand */ export const de_ActivateEmailContactCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<ActivateEmailContactCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); await collectBody(output.body, context); return contents; }; /** * deserializeAws_restJson1CreateEmailContactCommand */ export const de_CreateEmailContactCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<CreateEmailContactCommandOutput> => { if (output.statusCode !== 201 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); const data: Record<string, any> = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); const doc = take(data, { arn: __expectString, }); Object.assign(contents, doc); return contents; }; /** * deserializeAws_restJson1DeleteEmailContactCommand */ export const de_DeleteEmailContactCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<DeleteEmailContactCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); await collectBody(output.body, context); return contents; }; /** * deserializeAws_restJson1GetEmailContactCommand */ export const de_GetEmailContactCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<GetEmailContactCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); const data: Record<string, any> = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); const doc = take(data, { emailContact: (_) => de_EmailContact(_, context), }); Object.assign(contents, doc); return contents; }; /** * deserializeAws_restJson1ListEmailContactsCommand */ export const de_ListEmailContactsCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<ListEmailContactsCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); const data: Record<string, any> = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); const doc = take(data, { emailContacts: (_) => de_EmailContacts(_, context), nextToken: __expectString, }); Object.assign(contents, doc); return contents; }; /** * deserializeAws_restJson1ListTagsForResourceCommand */ export const de_ListTagsForResourceCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<ListTagsForResourceCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); const data: Record<string, any> = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); const doc = take(data, { tags: _json, }); Object.assign(contents, doc); return contents; }; /** * deserializeAws_restJson1SendActivationCodeCommand */ export const de_SendActivationCodeCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<SendActivationCodeCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); await collectBody(output.body, context); return contents; }; /** * deserializeAws_restJson1TagResourceCommand */ export const de_TagResourceCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<TagResourceCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); await collectBody(output.body, context); return contents; }; /** * deserializeAws_restJson1UntagResourceCommand */ export const de_UntagResourceCommand = async ( output: __HttpResponse, context: __SerdeContext ): Promise<UntagResourceCommandOutput> => { if (output.statusCode !== 200 && output.statusCode >= 300) { return de_CommandError(output, context); } const contents: any = map({ $metadata: deserializeMetadata(output), }); await collectBody(output.body, context); return contents; }; /** * deserialize_Aws_restJson1CommandError */ const de_CommandError = async (output: __HttpResponse, context: __SerdeContext): Promise<never> => { const parsedOutput: any = { ...output, body: await parseErrorBody(output.body, context), }; const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); switch (errorCode) { case "AccessDeniedException": case "com.amazonaws.notificationscontacts#AccessDeniedException": throw await de_AccessDeniedExceptionRes(parsedOutput, context); case "ConflictException": case "com.amazonaws.notificationscontacts#ConflictException": throw await de_ConflictExceptionRes(parsedOutput, context); case "InternalServerException": case "com.amazonaws.notificationscontacts#InternalServerException": throw await de_InternalServerExceptionRes(parsedOutput, context); case "ResourceNotFoundException": case "com.amazonaws.notificationscontacts#ResourceNotFoundException": throw await de_ResourceNotFoundExceptionRes(parsedOutput, context); case "ThrottlingException": case "com.amazonaws.notificationscontacts#ThrottlingException": throw await de_ThrottlingExceptionRes(parsedOutput, context); case "ValidationException": case "com.amazonaws.notificationscontacts#ValidationException": throw await de_ValidationExceptionRes(parsedOutput, context); case "ServiceQuotaExceededException": case "com.amazonaws.notificationscontacts#ServiceQuotaExceededException": throw await de_ServiceQuotaExceededExceptionRes(parsedOutput, context); default: const parsedBody = parsedOutput.body; return throwDefaultError({ output, parsedBody, errorCode, }) as never; } }; const throwDefaultError = withBaseException(__BaseException); /** * deserializeAws_restJson1AccessDeniedExceptionRes */ const de_AccessDeniedExceptionRes = async ( parsedOutput: any, context: __SerdeContext ): Promise<AccessDeniedException> => { const contents: any = map({}); const data: any = parsedOutput.body; const doc = take(data, { message: __expectString, }); Object.assign(contents, doc); const exception = new AccessDeniedException({ $metadata: deserializeMetadata(parsedOutput), ...contents, }); return __decorateServiceException(exception, parsedOutput.body); }; /** * deserializeAws_restJson1ConflictExceptionRes */ const de_ConflictExceptionRes = async (parsedOutput: any, context: __SerdeContext): Promise<ConflictException> => { const contents: any = map({}); const data: any = parsedOutput.body; const doc = take(data, { message: __expectString, resourceId: __expectString, resourceType: __expectString, }); Object.assign(contents, doc); const exception = new ConflictException({ $metadata: deserializeMetadata(parsedOutput), ...contents, }); return __decorateServiceException(exception, parsedOutput.body); }; /** * deserializeAws_restJson1InternalServerExceptionRes */ const de_InternalServerExceptionRes = async ( parsedOutput: any, context: __SerdeContext ): Promise<InternalServerException> => { const contents: any = map({}); const data: any = parsedOutput.body; const doc = take(data, { message: __expectString, }); Object.assign(contents, doc); const exception = new InternalServerException({ $metadata: deserializeMetadata(parsedOutput), ...contents, }); return __decorateServiceException(exception, parsedOutput.body); }; /** * deserializeAws_restJson1ResourceNotFoundExceptionRes */ const de_ResourceNotFoundExceptionRes = async ( parsedOutput: any, context: __SerdeContext ): Promise<ResourceNotFoundException> => { const contents: any = map({}); const data: any = parsedOutput.body; const doc = take(data, { message: __expectString, resourceId: __expectString, resourceType: __expectString, }); Object.assign(contents, doc); const exception = new ResourceNotFoundException({ $metadata: deserializeMetadata(parsedOutput), ...contents, }); return __decorateServiceException(exception, parsedOutput.body); }; /** * deserializeAws_restJson1ServiceQuotaExceededExceptionRes */ const de_ServiceQuotaExceededExceptionRes = async ( parsedOutput: any, context: __SerdeContext ): Promise<ServiceQuotaExceededException> => { const contents: any = map({}); const data: any = parsedOutput.body; const doc = take(data, { message: __expectString, quotaCode: __expectString, resourceId: __expectString, resourceType: __expectString, serviceCode: __expectString, }); Object.assign(contents, doc); const exception = new ServiceQuotaExceededException({ $metadata: deserializeMetadata(parsedOutput), ...contents, }); return __decorateServiceException(exception, parsedOutput.body); }; /** * deserializeAws_restJson1ThrottlingExceptionRes */ const de_ThrottlingExceptionRes = async (parsedOutput: any, context: __SerdeContext): Promise<ThrottlingException> => { const contents: any = map({ [_rAS]: [() => void 0 !== parsedOutput.headers[_ra], () => __strictParseInt32(parsedOutput.headers[_ra])], }); const data: any = parsedOutput.body; const doc = take(data, { message: __expectString, quotaCode: __expectString, serviceCode: __expectString, }); Object.assign(contents, doc); const exception = new ThrottlingException({ $metadata: deserializeMetadata(parsedOutput), ...contents, }); return __decorateServiceException(exception, parsedOutput.body); }; /** * deserializeAws_restJson1ValidationExceptionRes */ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeContext): Promise<ValidationException> => { const contents: any = map({}); const data: any = parsedOutput.body; const doc = take(data, { fieldList: _json, message: __expectString, reason: __expectString, }); Object.assign(contents, doc); const exception = new ValidationException({ $metadata: deserializeMetadata(parsedOutput), ...contents, }); return __decorateServiceException(exception, parsedOutput.body); }; // se_TagMap omitted. /** * deserializeAws_restJson1EmailContact */ const de_EmailContact = (output: any, context: __SerdeContext): EmailContact => { return take(output, { address: __expectString, arn: __expectString, creationTime: (_: any) => __expectNonNull(__parseRfc3339DateTimeWithOffset(_)), name: __expectString, status: __expectString, updateTime: (_: any) => __expectNonNull(__parseRfc3339DateTimeWithOffset(_)), }) as any; }; /** * deserializeAws_restJson1EmailContacts */ const de_EmailContacts = (output: any, context: __SerdeContext): EmailContact[] => { const retVal = (output || []) .filter((e: any) => e != null) .map((entry: any) => { return de_EmailContact(entry, context); }); return retVal; }; // de_TagMap omitted. // de_ValidationExceptionField omitted. // de_ValidationExceptionFieldList omitted. const deserializeMetadata = (output: __HttpResponse): __ResponseMetadata => ({ httpStatusCode: output.statusCode, requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], extendedRequestId: output.headers["x-amz-id-2"], cfId: output.headers["x-amz-cf-id"], }); // Encode Uint8Array data into string with utf-8. const collectBodyString = (streamBody: any, context: __SerdeContext): Promise<string> => collectBody(streamBody, context).then((body) => context.utf8Encoder(body)); const _mR = "maxResults"; const _nT = "nextToken"; const _rAS = "retryAfterSeconds"; const _ra = "retry-after"; const _tK = "tagKeys";