UNPKG

6.32 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.Body = exports.Request = void 0;
4const querystring_1 = require("querystring");
5const common_1 = require("../../common");
6const metrics = new common_1.Metrics("API Gateway");
7class Request {
8 constructor(event) {
9 this.event = event;
10 }
11 getProperties() {
12 const event = this.event;
13 const path = event.pathParameters || undefined;
14 const rawPath = event.rawPath || undefined;
15 const query = event.queryStringParameters || undefined;
16 const rawQueryString = event.rawQueryString || undefined;
17 const auth = this.getAuth();
18 const headers = event.headers || undefined;
19 const body = new Body(event.body, headers).getParsedBody();
20 const TEST_REQUEST_HEADER = process.env.TEST_REQUEST_HEADER || "test-request";
21 const testRequest = headers && headers[TEST_REQUEST_HEADER] ? JSON.parse(headers[TEST_REQUEST_HEADER]) : false;
22 const parsed = { body, path, rawPath, query, rawQueryString, auth, headers, testRequest };
23 metrics.common(parsed, event);
24 return parsed;
25 }
26 getAuth() {
27 var _a, _b, _c;
28 const authorizer = (_c = (_b = (_a = this.event) === null || _a === void 0 ? void 0 : _a.requestContext) === null || _b === void 0 ? void 0 : _b.authorizer) === null || _c === void 0 ? void 0 : _c.jwt;
29 return authorizer ? authorizer : undefined;
30 }
31}
32exports.Request = Request;
33class Body {
34 constructor(body, headers) {
35 this.body = body;
36 this.headers = headers;
37 }
38 getParsedBody() {
39 let parsedBody;
40 if (this.body) {
41 try {
42 const contentType = this.getContentType();
43 if (this.isFormUrlEncoded(contentType)) {
44 parsedBody = querystring_1.parse(this.body);
45 }
46 else if (this.isJSON(contentType)) {
47 parsedBody = JSON.parse(this.body);
48 }
49 else {
50 common_1.logger.error("Content-Type header not found, attempting to parse as JSON");
51 parsedBody = JSON.parse(this.body);
52 }
53 }
54 catch (err) {
55 common_1.logger.error("Error parsing body, returning as-is", err, this.body);
56 parsedBody = this.body;
57 }
58 }
59 return parsedBody;
60 }
61 getContentType() {
62 return (this.headers && (this.headers["Content-Type"] || this.headers["CONTENT-TYPE"] || this.headers["content-type"]));
63 }
64 isFormUrlEncoded(contentType) {
65 return contentType === null || contentType === void 0 ? void 0 : contentType.toUpperCase().includes("APPLICATION/X-WWW-FORM-URLENCODED");
66 }
67 isJSON(contentType) {
68 return contentType === null || contentType === void 0 ? void 0 : contentType.toUpperCase().includes("APPLICATION/JSON");
69 }
70}
71exports.Body = Body;
72//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS92Mi1odHRwL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBb0M7QUFFcEMseUNBQStDO0FBRS9DLE1BQU0sT0FBTyxHQUFHLElBQUksZ0JBQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUUzQyxNQUFhLE9BQU87SUFDbEIsWUFBb0IsS0FBbUI7UUFBbkIsVUFBSyxHQUFMLEtBQUssQ0FBYztJQUFHLENBQUM7SUFFM0MsYUFBYTtRQVVYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixJQUFJLFNBQVMsQ0FBQztRQUN2RCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxJQUFJLFNBQVMsQ0FBQztRQUN6RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzRCxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksY0FBYyxDQUFDO1FBQzlFLE1BQU0sV0FBVyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMs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
\No newline at end of file