You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
772 B

'use strict'
const fp = require('fastify-plugin')
const { parse: defaultParser } = require('fast-querystring')
function fastifyFormbody (fastify, options, next) {
const opts = Object.assign({ parser: defaultParser }, options)
if (typeof opts.parser !== 'function') {
next(new Error('parser must be a function'))
return
}
function contentParser (req, body, done) {
done(null, opts.parser(body.toString()))
}
fastify.addContentTypeParser(
'application/x-www-form-urlencoded',
{ parseAs: 'buffer', bodyLimit: opts.bodyLimit },
contentParser
)
next()
}
module.exports = fp(fastifyFormbody, {
fastify: '4.x',
name: '@fastify/formbody'
})
module.exports.default = fastifyFormbody
module.exports.fastifyFormbody = fastifyFormbody