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
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
|