From 642db770e980eea8111b17b12c0978ec5e020dad Mon Sep 17 00:00:00 2001 From: Thomas Kientz <10157845+ThomasKientz@users.noreply.github.com> Date: Tue, 8 Oct 2024 11:28:27 +0200 Subject: [PATCH 1/3] Support firebase Signed-off-by: Thomas Kientz <10157845+ThomasKientz@users.noreply.github.com> --- index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 4e9caf30..6ba1d3d7 100644 --- a/index.js +++ b/index.js @@ -29,6 +29,7 @@ const NoFormData = createError('FST_NO_FORM_DATA', 'FormData is not available', function setMultipart (req, payload, done) { req[kMultipart] = true + req.rawBody = payload.rawBody done() } @@ -297,7 +298,11 @@ function fastifyMultipart (fastify, options, done) { process.nextTick(() => cleanup(err)) }) - request.pipe(bb) + if (request.rawBody) { + bb.end(request.rawBody) + } else { + request.pipe(bb) + } function onField (name, fieldValue, fieldnameTruncated, valueTruncated, encoding, contentType) { // don't overwrite prototypes From cee33fe230819ebee8cd73b5db8f1cb04e318f68 Mon Sep 17 00:00:00 2001 From: Thomas Kientz <10157845+ThomasKientz@users.noreply.github.com> Date: Tue, 8 Oct 2024 12:59:49 +0200 Subject: [PATCH 2/3] Decorate rawBody to req Signed-off-by: Thomas Kientz <10157845+ThomasKientz@users.noreply.github.com> --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index 6ba1d3d7..cbeff514 100644 --- a/index.js +++ b/index.js @@ -30,6 +30,7 @@ const NoFormData = createError('FST_NO_FORM_DATA', 'FormData is not available', function setMultipart (req, payload, done) { req[kMultipart] = true req.rawBody = payload.rawBody + fastify.decorateRequest('rawBody', req.rawBody) done() } From 801f16258a4036716a5bab9935986d46c8cfa34d Mon Sep 17 00:00:00 2001 From: Thomas Kientz <10157845+ThomasKientz@users.noreply.github.com> Date: Tue, 8 Oct 2024 13:51:14 +0200 Subject: [PATCH 3/3] fix decorate request with rawBody Signed-off-by: Thomas Kientz <10157845+ThomasKientz@users.noreply.github.com> --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index cbeff514..2ab929b6 100644 --- a/index.js +++ b/index.js @@ -30,7 +30,6 @@ const NoFormData = createError('FST_NO_FORM_DATA', 'FormData is not available', function setMultipart (req, payload, done) { req[kMultipart] = true req.rawBody = payload.rawBody - fastify.decorateRequest('rawBody', req.rawBody) done() } @@ -183,6 +182,8 @@ function fastifyMultipart (fastify, options, done) { FileBufferNotFoundError }) + fastify.decorateRequest('rawBody', null) + fastify.addContentTypeParser('multipart/form-data', setMultipart) fastify.decorateRequest(kMultipart, false) fastify.decorateRequest(kMultipartHandler, handleMultipart)