Skip to content

Commit d41f500

Browse files
Chase Coalwelltrivikr
Chase Coalwell
authored andcommitted
Migrate acceptsHeaderMiddleware (#473)
1 parent 34b9fd7 commit d41f500

File tree

3 files changed

+52
-27
lines changed

3 files changed

+52
-27
lines changed

Diff for: codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddBuiltinPlugins.java

+5
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ public List<RuntimeClientPlugin> getClientPlugins() {
5252
RuntimeClientPlugin.builder()
5353
.withConventions(TypeScriptDependency.MIDDLEWARE_CONTENT_LENGTH.dependency, "ContentLength",
5454
HAS_MIDDLEWARE)
55+
.build(),
56+
RuntimeClientPlugin.builder()
57+
.withConventions("@aws-sdk/middleware-sdk-api-gateway", "^0.1.0-preview.5",
58+
"AcceptsHeader", HAS_MIDDLEWARE)
59+
.servicePredicate((m,s) -> s.getId().getName().equals("BackplaneControlService"))
5560
.build()
5661
);
5762
}
+11-17
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,25 @@
1-
import { BuildHandler } from "@aws-sdk/types";
2-
import { acceptsHeader } from "./index";
1+
import { acceptsHeaderMiddleware } from "./index";
2+
import { HttpRequest } from "@aws-sdk/protocol-http";
33

4-
describe("acceptsHeader", () => {
5-
const mockNextHandler = jest.fn();
6-
7-
const composedHandler: BuildHandler<any, any> = acceptsHeader(
8-
mockNextHandler
9-
);
4+
describe("acceptsHeaderMiddleware", () => {
5+
const next = jest.fn();
106

117
beforeEach(() => {
128
jest.clearAllMocks();
139
});
1410

1511
it("sets Accepts header to application/json", async () => {
16-
await composedHandler({
12+
const handler = acceptsHeaderMiddleware()(next, {} as any);
13+
await handler({
1714
input: {},
18-
request: {
19-
hostname: "foo.amazonaws.com",
20-
path: "/",
21-
protocol: "https:",
22-
method: "GET",
15+
request: new HttpRequest({
2316
headers: {}
24-
}
17+
})
2518
});
2619

27-
expect(mockNextHandler.mock.calls.length).toBe(1);
28-
const { request } = mockNextHandler.mock.calls[0][0];
20+
const { calls } = (next as any).mock;
21+
expect(calls.length).toBe(1);
22+
const { request } = next.mock.calls[0][0];
2923
expect(request.headers["accepts"]).toBe("application/json");
3024
});
3125
});

Diff for: packages/middleware-sdk-api-gateway/src/index.ts

+36-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,42 @@
1-
import { BuildHandler, BuildHandlerArguments } from "@aws-sdk/types";
1+
import {
2+
BuildHandler,
3+
BuildHandlerArguments,
4+
BuildHandlerOptions,
5+
BuildHandlerOutput,
6+
BuildMiddleware,
7+
MetadataBearer,
8+
Pluggable
9+
} from "@aws-sdk/types";
10+
import { HttpRequest } from "@aws-sdk/protocol-http";
211

3-
export function acceptsHeader(next: BuildHandler<any, any>) {
4-
return async (args: BuildHandlerArguments<any, any>) => {
12+
export function acceptsHeaderMiddleware(): BuildMiddleware<any, any> {
13+
return <Output extends MetadataBearer>(
14+
next: BuildHandler<any, Output>
15+
): BuildHandler<any, Output> => async (
16+
args: BuildHandlerArguments<any>
17+
): Promise<BuildHandlerOutput<Output>> => {
18+
let request = { ...args.request };
19+
if (HttpRequest.isInstance(request)) {
20+
request.headers = {
21+
...request.headers,
22+
accepts: "application/json"
23+
};
24+
}
525
return next({
626
...args,
7-
request: {
8-
...args.request,
9-
headers: {
10-
...args.request.headers,
11-
accepts: "application/json"
12-
}
13-
}
27+
request
1428
});
1529
};
1630
}
31+
32+
export const acceptsHeaderMiddlewareOptions: BuildHandlerOptions = {
33+
step: "build",
34+
tags: ["SET_ACCEPTS_HEADER", "ACCEPTS_HEADER"],
35+
name: "acceptsHeaderMiddleware"
36+
};
37+
38+
export const getAcceptsHeaderPlugin = (): Pluggable<any, any> => ({
39+
applyToStack: clientStack => {
40+
clientStack.add(acceptsHeaderMiddleware(), acceptsHeaderMiddlewareOptions);
41+
}
42+
});

0 commit comments

Comments
 (0)