Skip to content

Commit 7ec275a

Browse files
AllanZhengYPtrivikr
authored andcommitted
feat: remove protocol rest json class (#438)
* feat: remove rest-json protocol class * feat: rename handler to RequestHandler; Consolidate types
1 parent 09112e5 commit 7ec275a

27 files changed

+118
-561
lines changed

Diff for: clients/client-rds-data/RdsDataServiceClient.ts

+13-20
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import {
1818
Provider,
1919
HashConstructor,
2020
UrlParser,
21-
Protocol,
2221
StreamCollector,
2322
Decoder,
2423
Encoder
@@ -27,10 +26,7 @@ import {
2726
EndpointsConfigInput,
2827
EndpointsConfigResolved,
2928
resolveEndpointsConfig,
30-
ClientProtocolConfigInput,
31-
ClientProtocolConfigResolved,
32-
resolveClientProtocolConfig,
33-
destroyClientProtocolConfig,
29+
destroyRequestHandlerConfig,
3430
RegionConfigInput,
3531
RegionConfigResolved,
3632
resolveRegionConfig
@@ -54,7 +50,7 @@ import {
5450
resolveAwsAuthConfig,
5551
getAwsAuthPlugin
5652
} from "@aws-sdk/middleware-signing";
57-
import { HttpHandler, HttpRequest, HttpResponse } from "@aws-sdk/protocol-http";
53+
import { HttpHandler } from "@aws-sdk/protocol-http";
5854
import {
5955
Client as SmithyClient,
6056
SmithyResolvedConfiguration
@@ -78,10 +74,15 @@ export type ServiceOutputTypes =
7874
| BatchExecuteStatementResponse;
7975

8076
export interface RDSDataRuntimeDependencies {
77+
/**
78+
* The function that will be used to populate serializing protocol
79+
*/
80+
protocol: string;
81+
8182
/**
8283
* The HTTP handler to use. Fetch in browser and Https in Nodejs
8384
*/
84-
httpHandler?: HttpHandler;
85+
requestHandler?: HttpHandler;
8586

8687
/**
8788
* A constructor for a class implementing the @aws-sdk/types.Hash interface that computes the SHA-256 HMAC or checksum of a string or binary buffer
@@ -138,13 +139,6 @@ export interface RDSDataRuntimeDependencies {
138139
*/
139140
defaultUserAgent?: string;
140141

141-
/**
142-
* The function that will be used to populate serializing protocol
143-
*/
144-
protocolDefaultProvider?: (
145-
handler: HttpHandler
146-
) => Protocol<HttpRequest, HttpResponse>;
147-
148142
/**
149143
* The service name with which to sign requests.
150144
*/
@@ -161,7 +155,6 @@ export type RdsDataServiceConfig = RDSDataRuntimeDependencies &
161155
RegionConfigInput &
162156
RetryConfigInput &
163157
EndpointsConfigInput &
164-
ClientProtocolConfigInput &
165158
UserAgentConfigInput;
166159

167160
export type RdsDataServiceResolvedConfig = SmithyResolvedConfiguration<
@@ -172,21 +165,21 @@ export type RdsDataServiceResolvedConfig = SmithyResolvedConfiguration<
172165
RegionConfigResolved &
173166
RetryConfigResolved &
174167
EndpointsConfigResolved &
175-
ClientProtocolConfigResolved &
176168
UserAgentConfigResolved;
177169

178170
export class RdsDataService extends SmithyClient<
179171
__HttpOptions,
180172
ServiceInputTypes,
181-
ServiceOutputTypes
173+
ServiceOutputTypes,
174+
RdsDataServiceResolvedConfig
182175
> {
183176
readonly config: RdsDataServiceResolvedConfig;
184177

185178
constructor(configuration: RdsDataServiceConfig) {
186-
const _config_0 = resolveClientProtocolConfig({
179+
const _config_0 = {
187180
...RDSRuntimeConfiguration,
188181
...configuration
189-
});
182+
};
190183
let _config_1 = resolveRegionConfig(_config_0);
191184
let _config_2 = resolveAwsAuthConfig(_config_1);
192185
let _config_3 = resolveEndpointsConfig(_config_2);
@@ -201,6 +194,6 @@ export class RdsDataService extends SmithyClient<
201194
}
202195

203196
destroy(): void {
204-
destroyClientProtocolConfig(this.config);
197+
destroyRequestHandlerConfig(this.config);
205198
}
206199
}

Diff for: clients/client-rds-data/commands/ExecuteStatementCommand.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ import {
2121
} from "../RdsDataServiceClient";
2222

2323
export class ExecuteStatementCommand extends Command<
24+
ServiceInputTypes,
2425
ExecuteStatementRequest,
25-
ExecuteStatementResponse
26+
ServiceOutputTypes,
27+
ExecuteStatementResponse,
28+
RdsDataServiceResolvedConfig
2629
> {
2730
constructor(readonly input: ExecuteStatementRequest) {
2831
super();
@@ -33,9 +36,7 @@ export class ExecuteStatementCommand extends Command<
3336
configuration: RdsDataServiceResolvedConfig,
3437
options?: HttpOptions
3538
): Handler<ExecuteStatementRequest, ExecuteStatementResponse> {
36-
const {
37-
protocol: { handler }
38-
} = configuration;
39+
const { requestHandler } = configuration;
3940

4041
this.middlewareStack.use(
4142
getSerdePlugin(configuration, this.serialize, this.deserialize)
@@ -49,7 +50,7 @@ export class ExecuteStatementCommand extends Command<
4950

5051
return stack.resolve(
5152
(request: FinalizeHandlerArguments<any>) =>
52-
handler.handle(request.request as HttpRequest, options || {}),
53+
requestHandler.handle(request.request as HttpRequest, options || {}),
5354
handlerExecutionContext
5455
);
5556
}

Diff for: clients/client-rds-data/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
"@aws-sdk/middleware-user-agent": "^0.1.0-preview.1",
4343
"@aws-sdk/middleware-stack": "^0.1.0-preview.6",
4444
"@aws-sdk/node-http-handler": "^0.1.0-preview.6",
45-
"@aws-sdk/protocol-rest-json": "^0.1.0-preview.5",
4645
"@aws-sdk/region-provider": "^0.1.0-preview.5",
4746
"@aws-sdk/middleware-retry": "^0.1.0-preview.5",
4847
"@aws-sdk/signature-v4": "^0.1.0-preview.7",

Diff for: clients/client-rds-data/runtimeConfig.browser.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@ import { FetchHttpHandler } from "@aws-sdk/fetch-http-handler";
44
import { parseUrl } from "@aws-sdk/url-parser-browser";
55
import { calculateBodyLength } from "@aws-sdk/util-body-length-browser";
66
import { streamCollector } from "@aws-sdk/stream-collector-browser";
7-
import { RestJsonProtocol } from "@aws-sdk/protocol-rest-json";
87
import { fromUtf8, toUtf8 } from "@aws-sdk/util-utf8-browser";
98
import { fromBase64, toBase64 } from "@aws-sdk/util-base64-browser";
109
import { defaultUserAgent } from "@aws-sdk/util-user-agent-browser";
1110
import { name, version } from "./package.json";
1211
import { RDSDataRuntimeDependencies } from "./RdsDataServiceClient";
1312

1413
export const RDSRuntimeConfiguration: Required<RDSDataRuntimeDependencies> = {
15-
protocolDefaultProvider: handler => new RestJsonProtocol(handler),
14+
protocol: "aws.rest-json-1.1",
1615
signingName: "rds-data",
1716
service: "rds-data",
18-
httpHandler: new FetchHttpHandler(),
17+
requestHandler: new FetchHttpHandler(),
1918
sha256: Sha256,
2019
credentialDefaultProvider: invalidFunction("Credential is missing") as any,
2120
regionDefaultProvider: invalidFunction("Region is missing") as any,

Diff for: clients/client-rds-data/runtimeConfig.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,17 @@ import { defaultProvider as regionDefaultProvider } from "@aws-sdk/region-provid
55
import { parseUrl } from "@aws-sdk/url-parser-node";
66
import { calculateBodyLength } from "@aws-sdk/util-body-length-node";
77
import { streamCollector } from "@aws-sdk/stream-collector-node";
8-
import { RestJsonProtocol } from "@aws-sdk/protocol-rest-json";
98
import { fromUtf8, toUtf8 } from "@aws-sdk/util-utf8-node";
109
import { fromBase64, toBase64 } from "@aws-sdk/util-base64-node";
1110
import { defaultUserAgent } from "@aws-sdk/util-user-agent-node";
1211
import { name, version } from "./package.json";
1312
import { RDSDataRuntimeDependencies } from "./RdsDataServiceClient";
1413

1514
export const RDSRuntimeConfiguration: Required<RDSDataRuntimeDependencies> = {
16-
protocolDefaultProvider: handler => new RestJsonProtocol(handler),
15+
protocol: "aws.rest-json-1.1",
1716
signingName: "rds-data",
1817
service: "rds-data",
19-
httpHandler: new NodeHttpHandler(),
18+
requestHandler: new NodeHttpHandler(),
2019
sha256: Hash.bind(null, "sha256"),
2120
credentialDefaultProvider,
2221
regionDefaultProvider,

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"lerna": "3.18.3",
4747
"lint-staged": "^9.0.0",
4848
"prettier": "1.19.1",
49-
"typescript": "3.7.0-dev.20190926",
49+
"typescript": "^3.7.0",
5050
"yarn": "1.17.3"
5151
},
5252
"workspaces": [

Diff for: packages/config-resolver/src/HandlerConfig.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { RequestHandler } from "@aws-sdk/types";
2+
3+
export function destroyRequestHandlerConfig(config: {
4+
requestHandler: RequestHandler<any, any, any>;
5+
}): void {
6+
if (config.requestHandler.destroy) config.requestHandler.destroy();
7+
}

Diff for: packages/config-resolver/src/ProtocolConfig.ts

-29
This file was deleted.

Diff for: packages/config-resolver/src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export * from "./EndpointsConfig";
22
export * from "./RegionConfig";
3-
export * from "./ProtocolConfig";
3+
export * from "./HandlerConfig";

Diff for: packages/middleware-serde/src/deserializerMiddleware.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@ import {
44
DeserializeHandler,
55
DeserializeHandlerArguments,
66
DeserializeHandlerOutput,
7-
Protocol
7+
RequestHandler
88
} from "@aws-sdk/types";
99

1010
export function deserializerMiddleware<
1111
Input extends object,
1212
Output extends object,
1313
RuntimeUtils = any
1414
>(
15-
options: { protocol: Protocol<any, any> } & RuntimeUtils,
15+
options: {
16+
requestHandler: RequestHandler<any, any, any>;
17+
protocol: string;
18+
} & RuntimeUtils,
1619
deserializer: ResponseDeserializer<any, any, RuntimeUtils>
1720
): DeserializeMiddleware<Input, Output> {
1821
return (
@@ -21,11 +24,7 @@ export function deserializerMiddleware<
2124
args: DeserializeHandlerArguments<Input>
2225
): Promise<DeserializeHandlerOutput<Output>> => {
2326
const { response } = await next(args);
24-
const parsed = await options.protocol.deserialize(
25-
deserializer,
26-
response,
27-
options
28-
);
27+
const parsed = await deserializer(response, options.protocol, options);
2928
return {
3029
response,
3130
output: parsed as Output

Diff for: packages/middleware-serde/src/serdePlugin.ts

+10-9
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,25 @@ import {
22
RequestSerializer,
33
ResponseDeserializer,
44
Pluggable,
5-
Protocol,
65
MetadataBearer,
76
MiddlewareStack,
8-
EndpointBearer
7+
EndpointBearer,
8+
RequestHandler
99
} from "@aws-sdk/types";
1010
import { deserializerMiddleware } from "./deserializerMiddleware";
1111
import { serializerMiddleware } from "./serializerMiddleware";
1212

1313
export function getSerdePlugin<
1414
InputType extends object,
15-
SerializerRuntimeUtils extends EndpointBearer,
16-
OutputType extends MetadataBearer,
17-
DeserializerRuntimeUtils
15+
SerDeContext extends EndpointBearer,
16+
OutputType extends MetadataBearer
1817
>(
19-
config: SerializerRuntimeUtils &
20-
DeserializerRuntimeUtils & { protocol: Protocol<any, any> },
21-
serializer: RequestSerializer<any, SerializerRuntimeUtils>,
22-
deserializer: ResponseDeserializer<OutputType, any, DeserializerRuntimeUtils>
18+
config: SerDeContext & {
19+
protocol: string;
20+
requestHandler: RequestHandler<any, any, any>;
21+
},
22+
serializer: RequestSerializer<any, SerDeContext>,
23+
deserializer: ResponseDeserializer<OutputType, any, SerDeContext>
2324
): Pluggable<InputType, OutputType> {
2425
return {
2526
applyToStack: (commandStack: MiddlewareStack<InputType, OutputType>) => {

Diff for: packages/middleware-serde/src/serializerMiddleware.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@ import {
44
SerializeHandlerArguments,
55
SerializeHandlerOutput,
66
SerializeMiddleware,
7-
Protocol,
8-
EndpointBearer
7+
EndpointBearer,
8+
RequestHandler
99
} from "@aws-sdk/types";
1010

1111
export function serializerMiddleware<
1212
Input extends object,
1313
Output extends object,
1414
RuntimeUtils extends EndpointBearer
1515
>(
16-
options: { protocol: Protocol<any, any> } & RuntimeUtils,
16+
options: {
17+
requestHandler: RequestHandler<any, any, any>;
18+
protocol: string;
19+
} & RuntimeUtils,
1720
serializer: RequestSerializer<any, RuntimeUtils>
1821
): SerializeMiddleware<Input, Output> {
1922
return (
@@ -25,9 +28,9 @@ export function serializerMiddleware<
2528
...options,
2629
endpoint: await options.endpoint()
2730
};
28-
const request = options.protocol.serialize(
29-
serializer,
31+
const request = serializer(
3032
args.input,
33+
options.protocol,
3134
endpointResolvedOptions
3235
);
3336
return next({

Diff for: packages/protocol-http/src/httpHandler.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { HttpRequest } from "./httpRequest";
22
import { HttpResponse } from "./httpResponse";
3-
import { TransferHandler, HttpOptions } from "@aws-sdk/types";
3+
import { RequestHandler, HttpOptions } from "@aws-sdk/types";
44

5-
export type HttpHandler = TransferHandler<
5+
export type HttpHandler = RequestHandler<
66
HttpRequest,
77
HttpResponse,
88
HttpOptions

Diff for: packages/protocol-rest-json/.gitignore

-8
This file was deleted.

Diff for: packages/protocol-rest-json/.npmignore

-13
This file was deleted.

0 commit comments

Comments
 (0)