From 1708f9b3599e038f956d9deab666384aef035f77 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 16:43:32 +0100 Subject: [PATCH 01/13] busbox + size --- index.d.ts | 1 + index.js | 10 ++++++---- package.json | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/index.d.ts b/index.d.ts index 8d78cc2..d8d0644 100644 --- a/index.d.ts +++ b/index.d.ts @@ -9,6 +9,7 @@ declare module "lambda-multipart-parser" { contentType: string encoding: string fieldname: string + size: number } type MultipartRequest = { files: MultipartFile[] } & Record diff --git a/index.js b/index.js index 3189ad7..8e79d21 100644 --- a/index.js +++ b/index.js @@ -21,7 +21,7 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { - const busboy = new Busboy({ + const busboy = Busboy({ headers: { 'content-type': event.headers['content-type'] || event.headers['Content-Type'] } @@ -30,7 +30,8 @@ const parse = (event) => new Promise((resolve, reject) => { files: [] }; - busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { + busboy.on('file', (fieldname, file, info) => { + const { filename, encoding, mimeType } = info; const uploadFile = {}; file.on('data', data => { @@ -40,9 +41,10 @@ const parse = (event) => new Promise((resolve, reject) => { file.on('end', () => { if (uploadFile.content) { uploadFile.filename = filename; - uploadFile.contentType = mimetype; + uploadFile.contentType = mimeType; uploadFile.encoding = encoding; uploadFile.fieldname = fieldname; + uploadFile.size = Buffer.byteLength(uploadFile.content); result.files.push(uploadFile); } }); @@ -56,7 +58,7 @@ const parse = (event) => new Promise((resolve, reject) => { reject(error); }); - busboy.on('finish', () => { + busboy.on('close', () => { resolve(result); }); diff --git a/package.json b/package.json index c0dd70f..7629e84 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "multipart/formdata" ], "dependencies": { - "busboy": "^0.3.0" + "busboy": "^1.6.0" }, "devDependencies": { "chai": "^3.5.0", From 7edae34cd06815c33677528a3c1f99deeba5d932 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 17:07:06 +0100 Subject: [PATCH 02/13] Update index.js --- index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 8e79d21..74242b4 100644 --- a/index.js +++ b/index.js @@ -21,6 +21,9 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { + console.log("BUSBOX", JSON.stringify(event.headers)); + + const busboy = Busboy({ headers: { 'content-type': event.headers['content-type'] || event.headers['Content-Type'] @@ -48,7 +51,7 @@ const parse = (event) => new Promise((resolve, reject) => { result.files.push(uploadFile); } }); - }); + }); //.end(event.request.rawBody); busboy.on('field', (fieldname, value) => { result[fieldname] = value; From df50f16e8637bfd919ac80f7e6e3d5e7b0f5e14a Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 17:08:38 +0100 Subject: [PATCH 03/13] Update index.js --- index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 74242b4..4c9f9c8 100644 --- a/index.js +++ b/index.js @@ -23,10 +23,12 @@ const Busboy = require('busboy'); const parse = (event) => new Promise((resolve, reject) => { console.log("BUSBOX", JSON.stringify(event.headers)); + let ContentType = event.headers['content-type'] || event.headers['Content-Type']; + ContentType = ContentType.split(";")[0]; const busboy = Busboy({ headers: { - 'content-type': event.headers['content-type'] || event.headers['Content-Type'] + 'content-type': ContentType } }); const result = { From 5b448fb5cbddcdc4f660f10ef22e21ca59c2ae9b Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 17:51:24 +0100 Subject: [PATCH 04/13] Update index.js --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 4c9f9c8..ff646a7 100644 --- a/index.js +++ b/index.js @@ -21,7 +21,7 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { - console.log("BUSBOX", JSON.stringify(event.headers)); + console.log("BUSBOy---", JSON.stringify(event)); let ContentType = event.headers['content-type'] || event.headers['Content-Type']; ContentType = ContentType.split(";")[0]; @@ -53,7 +53,7 @@ const parse = (event) => new Promise((resolve, reject) => { result.files.push(uploadFile); } }); - }); //.end(event.request.rawBody); + }); busboy.on('field', (fieldname, value) => { result[fieldname] = value; From b26d7fa0324a2d32d47420aa7ddea4c1a89bc06c Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 17:53:34 +0100 Subject: [PATCH 05/13] Update index.js --- index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index ff646a7..aad350c 100644 --- a/index.js +++ b/index.js @@ -27,10 +27,12 @@ const parse = (event) => new Promise((resolve, reject) => { ContentType = ContentType.split(";")[0]; const busboy = Busboy({ - headers: { + headers: event.headers + }); /*{ + ...event.headers, 'content-type': ContentType } - }); + });*/ const result = { files: [] }; From 44e3838463cdc29af229092bcf546e81cce0ff79 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 18:20:01 +0100 Subject: [PATCH 06/13] Update index.js --- index.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index aad350c..3380795 100644 --- a/index.js +++ b/index.js @@ -21,18 +21,13 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { - console.log("BUSBOy---", JSON.stringify(event)); - - let ContentType = event.headers['content-type'] || event.headers['Content-Type']; - ContentType = ContentType.split(";")[0]; + console.log("BUSBOy---!!!!!!", JSON.stringify(event)); const busboy = Busboy({ - headers: event.headers - }); /*{ - ...event.headers, - 'content-type': ContentType + headers: { + 'content-type': event.headers['content-type'] || event.headers['Content-Type'] } - });*/ + }); const result = { files: [] }; From 5c880cb1323b910fbc38ad1c7f8079064f419c7b Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 20:08:51 +0100 Subject: [PATCH 07/13] Update index.js --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 3380795..277c339 100644 --- a/index.js +++ b/index.js @@ -25,7 +25,7 @@ const parse = (event) => new Promise((resolve, reject) => { const busboy = Busboy({ headers: { - 'content-type': event.headers['content-type'] || event.headers['Content-Type'] + 'content-type': event.headers //['content-type'] || event.headers['Content-Type'] } }); const result = { From 834a78e1039335c364713566aad3ae709d4e8a46 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 20:54:29 +0100 Subject: [PATCH 08/13] Update index.js --- index.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/index.js b/index.js index 277c339..9fdeceb 100644 --- a/index.js +++ b/index.js @@ -21,21 +21,22 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { - console.log("BUSBOy---!!!!!!", JSON.stringify(event)); + console.log("BUSBOyy", JSON.stringify(event)); - const busboy = Busboy({ - headers: { - 'content-type': event.headers //['content-type'] || event.headers['Content-Type'] + const bb = Busboy({ + headers: event.headers + }); /*{ + 'content-type': event.headers['content-type'] || event.headers['Content-Type'] } - }); + });*/ const result = { files: [] }; - busboy.on('file', (fieldname, file, info) => { - const { filename, encoding, mimeType } = info; + bb.on('file', (fieldname, file, info) => { const uploadFile = {}; - + const { filename, encoding, mimeType } = info; + file.on('data', data => { uploadFile.content = data; }); @@ -47,27 +48,28 @@ const parse = (event) => new Promise((resolve, reject) => { uploadFile.encoding = encoding; uploadFile.fieldname = fieldname; uploadFile.size = Buffer.byteLength(uploadFile.content); + result.files.push(uploadFile); } }); }); - busboy.on('field', (fieldname, value) => { + bb.on('field', (fieldname, value) => { result[fieldname] = value; }); - busboy.on('error', error => { + bb.on('error', error => { reject(error); }); - busboy.on('close', () => { + bb.on('close', () => { resolve(result); }); const encoding = event.encoding || (event.isBase64Encoded ? "base64" : "binary"); - busboy.write(event.body, encoding); - busboy.end(); + bb.write(event.body, encoding); + bb.end(); }); module.exports.parse = parse; \ No newline at end of file From 524fe50a84a96cd0ca30b99e787cb8415b3bf0f9 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 21:02:58 +0100 Subject: [PATCH 09/13] Update index.js --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 9fdeceb..05ccfe9 100644 --- a/index.js +++ b/index.js @@ -24,7 +24,8 @@ const parse = (event) => new Promise((resolve, reject) => { console.log("BUSBOyy", JSON.stringify(event)); const bb = Busboy({ - headers: event.headers + ...event.headers, + 'content-type': event.headers['content-type'] || event.headers['Content-Type'] }); /*{ 'content-type': event.headers['content-type'] || event.headers['Content-Type'] } From b04f2e1773421a447cd5742afbd24a6781afecc9 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Tue, 30 Jan 2024 21:08:43 +0100 Subject: [PATCH 10/13] Update index.js --- index.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index 05ccfe9..2eeb186 100644 --- a/index.js +++ b/index.js @@ -21,15 +21,13 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { - console.log("BUSBOyy", JSON.stringify(event)); + console.log("BUSBOyy---", JSON.stringify(event)); const bb = Busboy({ - ...event.headers, - 'content-type': event.headers['content-type'] || event.headers['Content-Type'] - }); /*{ - 'content-type': event.headers['content-type'] || event.headers['Content-Type'] + headers: { + 'Content-Type': event.headers['content-type'] || event.headers['Content-Type'] } - });*/ + }); const result = { files: [] }; From 217720b7dbfe6c5b4b5103f2c63e478caa78d3a8 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Wed, 31 Jan 2024 22:33:30 +0100 Subject: [PATCH 11/13] Update index.js --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 2eeb186..88c01dd 100644 --- a/index.js +++ b/index.js @@ -21,7 +21,7 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { - console.log("BUSBOyy---", JSON.stringify(event)); + console.log("BUSBOyy---!!!! TESTIN TESTING", JSON.stringify(event)); const bb = Busboy({ headers: { From 0b763ecbea15976e5aa7b80308d88cd65947ea5b Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Wed, 31 Jan 2024 22:41:10 +0100 Subject: [PATCH 12/13] Update index.js --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 88c01dd..cd9f1a2 100644 --- a/index.js +++ b/index.js @@ -26,7 +26,8 @@ const parse = (event) => new Promise((resolve, reject) => { const bb = Busboy({ headers: { 'Content-Type': event.headers['content-type'] || event.headers['Content-Type'] - } + }, + 'Content-Type': event.headers['content-type'] || event.headers['Content-Type'] }); const result = { files: [] From 73a54fd6697ddd5e564b60276b58a7de4aca14f9 Mon Sep 17 00:00:00 2001 From: Oakleaf Date: Wed, 31 Jan 2024 23:04:38 +0100 Subject: [PATCH 13/13] Update index.js --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index cd9f1a2..60efd1c 100644 --- a/index.js +++ b/index.js @@ -21,7 +21,7 @@ const Busboy = require('busboy'); } */ const parse = (event) => new Promise((resolve, reject) => { - console.log("BUSBOyy---!!!! TESTIN TESTING", JSON.stringify(event)); + console.log("BUSBOyy---!!!! TESTIN TESTING123", JSON.stringify(event)); const bb = Busboy({ headers: {