Skip to content

Commit 6c33a77

Browse files
authored
chore(protocol_tests): update protocol_tests with smithy-1.11.x (#2644)
* chore(protocol_tests): update protocol_tests with smithy-1.11.x * chore(protocol_tests): skip SimpleScalarPropertiesPureWhiteSpace
1 parent 27dbd8e commit 6c33a77

File tree

11 files changed

+390
-4
lines changed

11 files changed

+390
-4
lines changed

protocol_tests/aws-restjson/RestJsonProtocol.ts

+37
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ import {
4949
HostWithPathOperationCommandInput,
5050
HostWithPathOperationCommandOutput,
5151
} from "./commands/HostWithPathOperationCommand";
52+
import {
53+
HttpChecksumRequiredCommand,
54+
HttpChecksumRequiredCommandInput,
55+
HttpChecksumRequiredCommandOutput,
56+
} from "./commands/HttpChecksumRequiredCommand";
5257
import {
5358
HttpEnumPayloadCommand,
5459
HttpEnumPayloadCommandInput,
@@ -535,6 +540,38 @@ export class RestJsonProtocol extends RestJsonProtocolClient {
535540
}
536541
}
537542

543+
/**
544+
* This example tests httpChecksumRequired trait
545+
*/
546+
public httpChecksumRequired(
547+
args: HttpChecksumRequiredCommandInput,
548+
options?: __HttpHandlerOptions
549+
): Promise<HttpChecksumRequiredCommandOutput>;
550+
public httpChecksumRequired(
551+
args: HttpChecksumRequiredCommandInput,
552+
cb: (err: any, data?: HttpChecksumRequiredCommandOutput) => void
553+
): void;
554+
public httpChecksumRequired(
555+
args: HttpChecksumRequiredCommandInput,
556+
options: __HttpHandlerOptions,
557+
cb: (err: any, data?: HttpChecksumRequiredCommandOutput) => void
558+
): void;
559+
public httpChecksumRequired(
560+
args: HttpChecksumRequiredCommandInput,
561+
optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: HttpChecksumRequiredCommandOutput) => void),
562+
cb?: (err: any, data?: HttpChecksumRequiredCommandOutput) => void
563+
): Promise<HttpChecksumRequiredCommandOutput> | void {
564+
const command = new HttpChecksumRequiredCommand(args);
565+
if (typeof optionsOrCb === "function") {
566+
this.send(command, optionsOrCb);
567+
} else if (typeof cb === "function") {
568+
if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`);
569+
this.send(command, optionsOrCb || {}, cb);
570+
} else {
571+
return this.send(command, optionsOrCb);
572+
}
573+
}
574+
538575
public httpEnumPayload(
539576
args: HttpEnumPayloadCommandInput,
540577
options?: __HttpHandlerOptions

protocol_tests/aws-restjson/RestJsonProtocolClient.ts

+22
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ import {
2929
HostWithPathOperationCommandInput,
3030
HostWithPathOperationCommandOutput,
3131
} from "./commands/HostWithPathOperationCommand";
32+
import {
33+
HttpChecksumRequiredCommandInput,
34+
HttpChecksumRequiredCommandOutput,
35+
} from "./commands/HttpChecksumRequiredCommand";
3236
import { HttpEnumPayloadCommandInput, HttpEnumPayloadCommandOutput } from "./commands/HttpEnumPayloadCommand";
3337
import { HttpPayloadTraitsCommandInput, HttpPayloadTraitsCommandOutput } from "./commands/HttpPayloadTraitsCommand";
3438
import {
@@ -159,9 +163,11 @@ import {
159163
Logger as __Logger,
160164
Provider as __Provider,
161165
StreamCollector as __StreamCollector,
166+
StreamHasher as __StreamHasher,
162167
UrlParser as __UrlParser,
163168
UserAgent as __UserAgent,
164169
} from "@aws-sdk/types";
170+
import { Readable } from "stream";
165171

166172
export type ServiceInputTypes =
167173
| AllQueryStringTypesCommandInput
@@ -174,6 +180,7 @@ export type ServiceInputTypes =
174180
| EndpointWithHostLabelOperationCommandInput
175181
| GreetingWithErrorsCommandInput
176182
| HostWithPathOperationCommandInput
183+
| HttpChecksumRequiredCommandInput
177184
| HttpEnumPayloadCommandInput
178185
| HttpPayloadTraitsCommandInput
179186
| HttpPayloadTraitsWithMediaTypeCommandInput
@@ -221,6 +228,7 @@ export type ServiceOutputTypes =
221228
| EndpointWithHostLabelOperationCommandOutput
222229
| GreetingWithErrorsCommandOutput
223230
| HostWithPathOperationCommandOutput
231+
| HttpChecksumRequiredCommandOutput
224232
| HttpEnumPayloadCommandOutput
225233
| HttpPayloadTraitsCommandOutput
226234
| HttpPayloadTraitsWithMediaTypeCommandOutput
@@ -357,6 +365,20 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__
357365
* @internal
358366
*/
359367
defaultUserAgentProvider?: Provider<__UserAgent>;
368+
369+
/**
370+
* A function that, given a hash constructor and a stream, calculates the
371+
* hash of the streamed value.
372+
* @internal
373+
*/
374+
streamHasher?: __StreamHasher<Readable> | __StreamHasher<Blob>;
375+
376+
/**
377+
* A constructor for a class implementing the {@link __Hash} interface
378+
* that computes MD5 hashes.
379+
* @internal
380+
*/
381+
md5?: __HashConstructor;
360382
}
361383

362384
type RestJsonProtocolClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> &
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import { RestJsonProtocolClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../RestJsonProtocolClient";
2+
import { HttpChecksumRequiredInputOutput } from "../models/models_0";
3+
import {
4+
deserializeAws_restJson1HttpChecksumRequiredCommand,
5+
serializeAws_restJson1HttpChecksumRequiredCommand,
6+
} from "../protocols/Aws_restJson1";
7+
import { getApplyMd5BodyChecksumPlugin } from "@aws-sdk/middleware-apply-body-checksum";
8+
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
9+
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
10+
import { Command as $Command } from "@aws-sdk/smithy-client";
11+
import {
12+
FinalizeHandlerArguments,
13+
Handler,
14+
HandlerExecutionContext,
15+
MiddlewareStack,
16+
HttpHandlerOptions as __HttpHandlerOptions,
17+
MetadataBearer as __MetadataBearer,
18+
SerdeContext as __SerdeContext,
19+
} from "@aws-sdk/types";
20+
21+
export interface HttpChecksumRequiredCommandInput extends HttpChecksumRequiredInputOutput {}
22+
export interface HttpChecksumRequiredCommandOutput extends HttpChecksumRequiredInputOutput, __MetadataBearer {}
23+
24+
/**
25+
* This example tests httpChecksumRequired trait
26+
* @example
27+
* Use a bare-bones client and the command you need to make an API call.
28+
* ```javascript
29+
* import { RestJsonProtocolClient, HttpChecksumRequiredCommand } from "@aws-sdk/aws-restjson"; // ES Modules import
30+
* // const { RestJsonProtocolClient, HttpChecksumRequiredCommand } = require("@aws-sdk/aws-restjson"); // CommonJS import
31+
* const client = new RestJsonProtocolClient(config);
32+
* const command = new HttpChecksumRequiredCommand(input);
33+
* const response = await client.send(command);
34+
* ```
35+
*
36+
* @see {@link HttpChecksumRequiredCommandInput} for command's `input` shape.
37+
* @see {@link HttpChecksumRequiredCommandOutput} for command's `response` shape.
38+
* @see {@link RestJsonProtocolClientResolvedConfig | config} for command's `input` shape.
39+
*
40+
*/
41+
export class HttpChecksumRequiredCommand extends $Command<
42+
HttpChecksumRequiredCommandInput,
43+
HttpChecksumRequiredCommandOutput,
44+
RestJsonProtocolClientResolvedConfig
45+
> {
46+
// Start section: command_properties
47+
// End section: command_properties
48+
49+
constructor(readonly input: HttpChecksumRequiredCommandInput) {
50+
// Start section: command_constructor
51+
super();
52+
// End section: command_constructor
53+
}
54+
55+
/**
56+
* @internal
57+
*/
58+
resolveMiddleware(
59+
clientStack: MiddlewareStack<ServiceInputTypes, ServiceOutputTypes>,
60+
configuration: RestJsonProtocolClientResolvedConfig,
61+
options?: __HttpHandlerOptions
62+
): Handler<HttpChecksumRequiredCommandInput, HttpChecksumRequiredCommandOutput> {
63+
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
64+
this.middlewareStack.use(getApplyMd5BodyChecksumPlugin(configuration));
65+
66+
const stack = clientStack.concat(this.middlewareStack);
67+
68+
const { logger } = configuration;
69+
const clientName = "RestJsonProtocolClient";
70+
const commandName = "HttpChecksumRequiredCommand";
71+
const handlerExecutionContext: HandlerExecutionContext = {
72+
logger,
73+
clientName,
74+
commandName,
75+
inputFilterSensitiveLog: HttpChecksumRequiredInputOutput.filterSensitiveLog,
76+
outputFilterSensitiveLog: HttpChecksumRequiredInputOutput.filterSensitiveLog,
77+
};
78+
const { requestHandler } = configuration;
79+
return stack.resolve(
80+
(request: FinalizeHandlerArguments<any>) =>
81+
requestHandler.handle(request.request as __HttpRequest, options || {}),
82+
handlerExecutionContext
83+
);
84+
}
85+
86+
private serialize(input: HttpChecksumRequiredCommandInput, context: __SerdeContext): Promise<__HttpRequest> {
87+
return serializeAws_restJson1HttpChecksumRequiredCommand(input, context);
88+
}
89+
90+
private deserialize(output: __HttpResponse, context: __SerdeContext): Promise<HttpChecksumRequiredCommandOutput> {
91+
return deserializeAws_restJson1HttpChecksumRequiredCommand(output, context);
92+
}
93+
94+
// Start section: command_body_extra
95+
// End section: command_body_extra
96+
}

protocol_tests/aws-restjson/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export * from "./commands/EndpointOperationCommand";
1010
export * from "./commands/EndpointWithHostLabelOperationCommand";
1111
export * from "./commands/GreetingWithErrorsCommand";
1212
export * from "./commands/HostWithPathOperationCommand";
13+
export * from "./commands/HttpChecksumRequiredCommand";
1314
export * from "./commands/HttpEnumPayloadCommand";
1415
export * from "./commands/HttpPayloadTraitsCommand";
1516
export * from "./commands/HttpPayloadTraitsWithMediaTypeCommand";

protocol_tests/aws-restjson/models/models_0.ts

+13
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,19 @@ export namespace InvalidGreeting {
246246
});
247247
}
248248

249+
export interface HttpChecksumRequiredInputOutput {
250+
foo?: string;
251+
}
252+
253+
export namespace HttpChecksumRequiredInputOutput {
254+
/**
255+
* @internal
256+
*/
257+
export const filterSensitiveLog = (obj: HttpChecksumRequiredInputOutput): any => ({
258+
...obj,
259+
});
260+
}
261+
249262
export interface HttpPayloadTraitsInputOutput {
250263
foo?: string;
251264
blob?: Uint8Array;

protocol_tests/aws-restjson/package.json

+4
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,12 @@
2929
"@aws-crypto/sha256-js": "^1.0.0",
3030
"@aws-sdk/config-resolver": "3.23.0",
3131
"@aws-sdk/fetch-http-handler": "3.23.0",
32+
"@aws-sdk/hash-blob-browser": "3.23.0",
3233
"@aws-sdk/hash-node": "3.23.0",
34+
"@aws-sdk/hash-stream-node": "3.23.0",
3335
"@aws-sdk/invalid-dependency": "3.23.0",
36+
"@aws-sdk/md5-js": "3.23.0",
37+
"@aws-sdk/middleware-apply-body-checksum": "3.23.0",
3438
"@aws-sdk/middleware-content-length": "3.23.0",
3539
"@aws-sdk/middleware-host-header": "3.23.0",
3640
"@aws-sdk/middleware-logger": "3.23.0",

protocol_tests/aws-restjson/protocols/Aws_restJson1.ts

+75
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ import {
2929
HostWithPathOperationCommandInput,
3030
HostWithPathOperationCommandOutput,
3131
} from "../commands/HostWithPathOperationCommand";
32+
import {
33+
HttpChecksumRequiredCommandInput,
34+
HttpChecksumRequiredCommandOutput,
35+
} from "../commands/HttpChecksumRequiredCommand";
3236
import { HttpEnumPayloadCommandInput, HttpEnumPayloadCommandOutput } from "../commands/HttpEnumPayloadCommand";
3337
import { HttpPayloadTraitsCommandInput, HttpPayloadTraitsCommandOutput } from "../commands/HttpPayloadTraitsCommand";
3438
import {
@@ -468,6 +472,30 @@ export const serializeAws_restJson1HostWithPathOperationCommand = async (
468472
});
469473
};
470474

475+
export const serializeAws_restJson1HttpChecksumRequiredCommand = async (
476+
input: HttpChecksumRequiredCommandInput,
477+
context: __SerdeContext
478+
): Promise<__HttpRequest> => {
479+
const { hostname, protocol = "https", port, path: basePath } = await context.endpoint();
480+
const headers: any = {
481+
"content-type": "application/json",
482+
};
483+
let resolvedPath = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + "/HttpChecksumRequired";
484+
let body: any;
485+
body = JSON.stringify({
486+
...(input.foo !== undefined && input.foo !== null && { foo: input.foo }),
487+
});
488+
return new __HttpRequest({
489+
protocol,
490+
hostname,
491+
port,
492+
method: "POST",
493+
headers,
494+
path: resolvedPath,
495+
body,
496+
});
497+
};
498+
471499
export const serializeAws_restJson1HttpEnumPayloadCommand = async (
472500
input: HttpEnumPayloadCommandInput,
473501
context: __SerdeContext
@@ -2089,6 +2117,53 @@ const deserializeAws_restJson1HostWithPathOperationCommandError = async (
20892117
return Promise.reject(Object.assign(new Error(message), response));
20902118
};
20912119

2120+
export const deserializeAws_restJson1HttpChecksumRequiredCommand = async (
2121+
output: __HttpResponse,
2122+
context: __SerdeContext
2123+
): Promise<HttpChecksumRequiredCommandOutput> => {
2124+
if (output.statusCode !== 200 && output.statusCode >= 300) {
2125+
return deserializeAws_restJson1HttpChecksumRequiredCommandError(output, context);
2126+
}
2127+
const contents: HttpChecksumRequiredCommandOutput = {
2128+
$metadata: deserializeMetadata(output),
2129+
foo: undefined,
2130+
};
2131+
const data: any = await parseBody(output.body, context);
2132+
if (data.foo !== undefined && data.foo !== null) {
2133+
contents.foo = __expectString(data.foo);
2134+
}
2135+
return Promise.resolve(contents);
2136+
};
2137+
2138+
const deserializeAws_restJson1HttpChecksumRequiredCommandError = async (
2139+
output: __HttpResponse,
2140+
context: __SerdeContext
2141+
): Promise<HttpChecksumRequiredCommandOutput> => {
2142+
const parsedOutput: any = {
2143+
...output,
2144+
body: await parseBody(output.body, context),
2145+
};
2146+
let response: __SmithyException & __MetadataBearer & { [key: string]: any };
2147+
let errorCode: string = "UnknownError";
2148+
errorCode = loadRestJsonErrorCode(output, parsedOutput.body);
2149+
switch (errorCode) {
2150+
default:
2151+
const parsedBody = parsedOutput.body;
2152+
errorCode = parsedBody.code || parsedBody.Code || errorCode;
2153+
response = {
2154+
...parsedBody,
2155+
name: `${errorCode}`,
2156+
message: parsedBody.message || parsedBody.Message || errorCode,
2157+
$fault: "client",
2158+
$metadata: deserializeMetadata(output),
2159+
} as any;
2160+
}
2161+
const message = response.message || response.Message || errorCode;
2162+
response.message = message;
2163+
delete response.Message;
2164+
return Promise.reject(Object.assign(new Error(message), response));
2165+
};
2166+
20922167
export const deserializeAws_restJson1HttpEnumPayloadCommand = async (
20932168
output: __HttpResponse,
20942169
context: __SerdeContext

protocol_tests/aws-restjson/runtimeConfig.browser.ts

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import packageInfo from "./package.json";
22

33
import { Sha256 } from "@aws-crypto/sha256-browser";
44
import { FetchHttpHandler, streamCollector } from "@aws-sdk/fetch-http-handler";
5+
import { blobHasher as streamHasher } from "@aws-sdk/hash-blob-browser";
6+
import { Md5 } from "@aws-sdk/md5-js";
57
import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@aws-sdk/middleware-retry";
68
import { fromBase64, toBase64 } from "@aws-sdk/util-base64-browser";
79
import { calculateBodyLength } from "@aws-sdk/util-body-length-browser";
@@ -26,10 +28,12 @@ export const getRuntimeConfig = (config: RestJsonProtocolClientConfig = {}) => {
2628
config.defaultUserAgentProvider ??
2729
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
2830
maxAttempts: config.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
31+
md5: config.md5 ?? Md5,
2932
requestHandler: config.requestHandler ?? new FetchHttpHandler(),
3033
retryModeProvider: config.retryModeProvider ?? (() => Promise.resolve(DEFAULT_RETRY_MODE)),
3134
sha256: config.sha256 ?? Sha256,
3235
streamCollector: config.streamCollector ?? streamCollector,
36+
streamHasher: config.streamHasher ?? streamHasher,
3337
utf8Decoder: config.utf8Decoder ?? fromUtf8,
3438
utf8Encoder: config.utf8Encoder ?? toUtf8,
3539
};

protocol_tests/aws-restjson/runtimeConfig.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import packageInfo from "./package.json";
22

33
import { Hash } from "@aws-sdk/hash-node";
4+
import { fileStreamHasher as streamHasher } from "@aws-sdk/hash-stream-node";
45
import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@aws-sdk/middleware-retry";
56
import { loadConfig as loadNodeConfig } from "@aws-sdk/node-config-provider";
67
import { NodeHttpHandler, streamCollector } from "@aws-sdk/node-http-handler";
8+
import { HashConstructor as __HashConstructor } from "@aws-sdk/types";
79
import { fromBase64, toBase64 } from "@aws-sdk/util-base64-node";
810
import { calculateBodyLength } from "@aws-sdk/util-body-length-node";
911
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
@@ -29,10 +31,12 @@ export const getRuntimeConfig = (config: RestJsonProtocolClientConfig = {}) => {
2931
config.defaultUserAgentProvider ??
3032
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
3133
maxAttempts: config.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
34+
md5: config.md5 ?? Hash.bind(null, "md5"),
3235
requestHandler: config.requestHandler ?? new NodeHttpHandler(),
3336
retryModeProvider: config.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
3437
sha256: config.sha256 ?? Hash.bind(null, "sha256"),
3538
streamCollector: config.streamCollector ?? streamCollector,
39+
streamHasher: config.streamHasher ?? streamHasher,
3640
utf8Decoder: config.utf8Decoder ?? fromUtf8,
3741
utf8Encoder: config.utf8Encoder ?? toUtf8,
3842
};

0 commit comments

Comments
 (0)