From 363fb346f4952ae941e6f223b9c8de56d097f791 Mon Sep 17 00:00:00 2001 From: Sravan Sriram Date: Tue, 30 Aug 2022 15:38:57 +0530 Subject: [PATCH] Added charset as 'utf-8'. --- .DS_Store | Bin 0 -> 6148 bytes src/request.spec.js | 23 +++++++++++++++++------ src/request.ts | 8 ++++++-- 3 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..feca8613504bcd7430524202412f605a970dd548 GIT binary patch literal 6148 zcmeH~JqiLr422VS3&Cbf%V|7-HyA`u-~~i21wpZ&qx41vI)z6#m+=T zbn`f`MFtU>!%bynVPcAXCwIBY>3lz3j@RpDteEA>YT$!Ro{xoGkN^pg011!)3H%HJ zJGWu;MJOW)kN^pc1nmD%;HEXTh5D}p!AAgSkF*=sK1)E0C7?C6g(3sfXoW_r`WRw) zZ-`o{NKSp&Hs}YZb^Uy{)~Y3 z+x>QfkIJ+4?ei>u$gHg!9O~r=FP8vp>?mHs-SE8F0$NjBC^9f!1RMhc34E2n6Mwc5 Aa{vGU literal 0 HcmV?d00001 diff --git a/src/request.spec.js b/src/request.spec.js index a13b5b4..8b7911a 100644 --- a/src/request.spec.js +++ b/src/request.spec.js @@ -26,7 +26,9 @@ describe('Request object version 1.0', () => { 'c[]': 'lastName', 'd[1]': '1', 'd[0]': '0', - 'shoe[color]': 'yellow' + 'shoe[color]': 'yellow', + email: 'test%2Buser%40gmail.com', + math: '1%2B2' }, multiValueQueryStringParameters: { a: ['1'], @@ -34,7 +36,9 @@ describe('Request object version 1.0', () => { 'c[]': ['-firstName', 'lastName'], 'd[1]': ['1'], 'd[0]': ['0'], - 'shoe[color]': ['yellow'] + 'shoe[color]': ['yellow'], + email: ['test%2Buser%40gmail.com'], + math: ['1%2B2', '4%2B5'] }, stageVariables: {}, requestContext: {}, @@ -47,6 +51,7 @@ describe('Request object version 1.0', () => { expect(request.query.a).toBe('1') expect(request.query.shoe.color).toBe('yellow') + expect(request.query.email).toBe('test+user@gmail.com') }) it('should read all values of query parameter with multiple values', () => { @@ -55,6 +60,7 @@ describe('Request object version 1.0', () => { expect(request.query.b).toEqual(['1', '2']) expect(request.query.c).toEqual(['-firstName', 'lastName']) expect(request.query.d).toEqual(['0', '1']) + expect(request.query.math).toEqual(['1+2', '4+5']) }) it('should read header', () => { @@ -193,7 +199,8 @@ describe('Request object version 2.0', () => { version: '2.0', routeKey: '$default', rawPath: '/my/path', - rawQueryString: 'a=1&b=1&b=2&c[]=-firstName&c[]=lastName&d[1]=1&d[0]=0&shoe[color]=yellow&', + rawQueryString: + 'a=1&b=1&b=2&c[]=-firstName&c[]=lastName&d[1]=1&d[0]=0&shoe[color]=yellow&email=test%2Buser%40gmail.com&math=1%2B2&&math=4%2B5&', cookies: ['cookie1', 'cookie2'], headers: { 'Content-Type': 'application/json', @@ -202,11 +209,13 @@ describe('Request object version 2.0', () => { }, queryStringParameters: { a: '1', - b: '1,2', - 'c[]': '-firstName,lastName', + b: '2', + 'c[]': 'lastName', 'd[1]': '1', 'd[0]': '0', - 'shoe[color]': 'yellow' + 'shoe[color]': 'yellow', + email: 'test%2Buser%40gmail.com', + math: '1%2B2' }, requestContext: { accountId: '123456789012', @@ -264,6 +273,7 @@ describe('Request object version 2.0', () => { expect(request.query.a).toBe('1') expect(request.query.shoe.color).toBe('yellow') + expect(request.query.email).toBe('test+user@gmail.com') }) it('should read all values of query parameter with multiple values', () => { @@ -272,6 +282,7 @@ describe('Request object version 2.0', () => { expect(request.query.b).toEqual(['1', '2']) expect(request.query.c).toEqual(['-firstName', 'lastName']) expect(request.query.d).toEqual(['0', '1']) + expect(request.query.math).toEqual(['1+2', '4+5']) }) it('should read header', () => { diff --git a/src/request.ts b/src/request.ts index ca1970b..7e43425 100644 --- a/src/request.ts +++ b/src/request.ts @@ -74,7 +74,9 @@ export class Request extends Readable { } } - this.query = parse(queryParamsToStringify(event.multiValueQueryStringParameters), {}) as { + this.query = parse(queryParamsToStringify(event.multiValueQueryStringParameters), { + charset: 'utf-8' + }) as { [name: string]: string | string[] } @@ -289,7 +291,9 @@ export class RequestV2 extends Readable { this.hostname = this.headers.host || '' this.method = event.requestContext.http.method - this.query = parse(event.rawQueryString) as { [name: string]: string } + this.query = parse(event.rawQueryString, { + charset: 'utf-8' + }) as { [name: string]: string } this.path = event.rawPath || '' this.url = event.rawPath