From 314d422ce7c71bdd5aa606de0c673473b4c155ef Mon Sep 17 00:00:00 2001 From: David Moore Date: Tue, 16 May 2023 14:40:45 +1000 Subject: [PATCH] feat: automatic query param decoding --- src/faas/v0/context.test.ts | 4 ++++ src/faas/v0/context.ts | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/faas/v0/context.test.ts b/src/faas/v0/context.test.ts index 6c6f645c..f9e2c31d 100644 --- a/src/faas/v0/context.test.ts +++ b/src/faas/v0/context.test.ts @@ -39,6 +39,9 @@ describe('NitricTrigger.fromGrpcTriggerRequest', () => { const testQuery = new QueryValue(); testQuery.addValue('test'); ctx.getQueryParamsMap().set('test', testQuery); + const testEncodedQuery = new QueryValue(); + testEncodedQuery.addValue(encodeURIComponent('/path/here')); + ctx.getQueryParamsMap().set('test-encoded', testEncodedQuery); const request = new TriggerRequest(); request.setData('Hello World'); request.setHttp(ctx); @@ -69,6 +72,7 @@ describe('NitricTrigger.fromGrpcTriggerRequest', () => { it('should have the provided query params', () => { expect(trigger.http.req.query['test']).toBe('test'); + expect(trigger.http.req.query['test-encoded']).toBe('/path/here'); }); it('should allow json response', () => { diff --git a/src/faas/v0/context.ts b/src/faas/v0/context.ts index 5721f27e..f59835b3 100644 --- a/src/faas/v0/context.ts +++ b/src/faas/v0/context.ts @@ -302,7 +302,10 @@ export class HttpContext extends TriggerContext { ).reduce( (acc, [key, [val]]) => ({ ...acc, - [key]: val.length === 1 ? val[0] : val, + [key]: + val.length === 1 + ? decodeURIComponent(val[0]) + : val.map((v) => decodeURIComponent(v)), }), {} ); @@ -326,7 +329,7 @@ export class HttpContext extends TriggerContext { .reduce( (acc, [key, val]) => ({ ...acc, - [key]: val, + [key]: decodeURIComponent(val), }), {} );