Skip to content

Commit e2884af

Browse files
AllanZhengYPsrchase
authored andcommitted
fix: update updated types (#474)
* Use HttpRequest interface instread of class when implementation is not necessary * Make request serializer async just like response deserializer. This makes the serde symmetric
1 parent b6801fd commit e2884af

File tree

6 files changed

+45
-82
lines changed

6 files changed

+45
-82
lines changed

packages/protocol-http/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"license": "Apache-2.0",
1717
"dependencies": {
1818
"tslib": "^1.8.0",
19-
"@aws-sdk/types": "^0.1.0-preview.4",
19+
"@aws-sdk/types": "^0.1.0-preview.5",
2020
"@aws-sdk/util-uri-escape": "^0.1.0-preview.3"
2121
},
2222
"devDependencies": {

packages/protocol-http/src/http.ts

Lines changed: 0 additions & 69 deletions
This file was deleted.

packages/protocol-http/src/httpRequest.ts

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
import { escapeUri } from "@aws-sdk/util-uri-escape";
22
import {
33
HttpMessage,
4-
HttpEndpoint,
4+
Endpoint,
55
QueryParameterBag,
6-
HeaderBag
7-
} from "./http";
6+
HeaderBag,
7+
HttpRequest as IHttpRequest
8+
} from "@aws-sdk/types";
89

910
type HttpRequestOptions = Partial<HttpMessage> &
10-
Partial<HttpEndpoint> & { method?: string };
11+
Partial<Endpoint> & { method?: string };
1112

12-
export class HttpRequest implements HttpMessage, HttpEndpoint {
13+
export interface HttpRequest extends IHttpRequest {}
14+
15+
export class HttpRequest implements HttpMessage, Endpoint {
1316
public method: string;
1417
public protocol: string;
1518
public hostname: string;
@@ -18,7 +21,6 @@ export class HttpRequest implements HttpMessage, HttpEndpoint {
1821
public query: QueryParameterBag;
1922
public headers: HeaderBag;
2023
public body?: any;
21-
private readonly isHttpRequest = true;
2224

2325
constructor(options: HttpRequestOptions) {
2426
this.method = options.method || "GET";
@@ -40,8 +42,15 @@ export class HttpRequest implements HttpMessage, HttpEndpoint {
4042
}
4143

4244
static isInstance(request: unknown): request is HttpRequest {
45+
//determine if request is a valid httpRequest
46+
const req: any = request;
4347
return (
44-
request !== undefined && (request as HttpRequest).isHttpRequest === true
48+
"method" in req &&
49+
"protocol" in req &&
50+
"hostname" in req &&
51+
"path" in req &&
52+
typeof req["query"] === "object" &&
53+
typeof req["headers"] === "object"
4554
);
4655
}
4756

@@ -57,6 +66,28 @@ export class HttpRequest implements HttpMessage, HttpEndpoint {
5766
return `${this.protocol}//${hostname}${this.path}${queryString}`;
5867
}
5968

69+
clone(): HttpRequest {
70+
const cloned = new HttpRequest({
71+
...this,
72+
headers: { ...this.headers }
73+
});
74+
if (cloned.query) cloned.query = this.cloneQuery(cloned.query);
75+
return cloned;
76+
}
77+
78+
private cloneQuery(query: QueryParameterBag): QueryParameterBag {
79+
return Object.keys(query).reduce(
80+
(carry: QueryParameterBag, paramName: string) => {
81+
const param = query[paramName];
82+
return {
83+
...carry,
84+
[paramName]: Array.isArray(param) ? [...param] : param
85+
};
86+
},
87+
{}
88+
);
89+
}
90+
6091
private buildQueryString(): string {
6192
const parts: string[] = [];
6293
for (let key of Object.keys(this.query || {}).sort()) {

packages/protocol-http/src/httpResponse.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import {
22
HttpMessage,
3-
HttpEndpoint,
4-
QueryParameterBag,
5-
HeaderBag
6-
} from "./http";
3+
HeaderBag,
4+
HttpResponse as IHttpResponse
5+
} from "@aws-sdk/types";
76

87
type HttpResponseOptions = Partial<HttpMessage> & {
98
statusCode: number;
109
};
1110

11+
export interface HttpResponse extends IHttpResponse {}
12+
1213
export class HttpResponse {
1314
public statusCode: number;
1415
public headers: HeaderBag;

packages/protocol-http/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
export * from "./httpResponse";
22
export * from "./httpRequest";
33
export * from "./httpHandler";
4-
export * from "./http";

packages/protocol-http/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"importHelpers": true,
1010
"noEmitHelpers": true,
1111
"lib": [
12+
"dom",
1213
"es5",
1314
"es2015.promise",
1415
"es2015.collection",

0 commit comments

Comments
 (0)