1 | import { createError } from '@middy/util'
|
2 |
|
3 | const defaults = {
|
4 | reviver: undefined
|
5 | }
|
6 |
|
7 | const wsJsonBodyParserMiddleware = (opts = {}) => {
|
8 | const options = { ...defaults, ...opts }
|
9 | const wsJsonBodyParserMiddlewareBefore = async (request) => {
|
10 | const { body } = request.event
|
11 |
|
12 | try {
|
13 | const data = request.event.isBase64Encoded
|
14 | ? Buffer.from(body, 'base64').toString()
|
15 | : body
|
16 |
|
17 | request.event.body = JSON.parse(data, options.reviver)
|
18 | } catch (err) {
|
19 |
|
20 | throw createError(422, 'Invalid or malformed JSON was provided', {
|
21 | cause: { package: '@middy/ws-json-body-parser', data: err }
|
22 | })
|
23 | }
|
24 | }
|
25 |
|
26 | return {
|
27 | before: wsJsonBodyParserMiddlewareBefore
|
28 | }
|
29 | }
|
30 | export default wsJsonBodyParserMiddleware
|