index.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*!
  2. * body-parser
  3. * MIT Licensed
  4. */
  5. /**
  6. * Module dependencies.
  7. */
  8. var deprecate = require('depd')('body-parser')
  9. var fs = require('fs')
  10. var path = require('path')
  11. /**
  12. * Module exports.
  13. */
  14. exports = module.exports = deprecate.function(bodyParser,
  15. 'bodyParser: use individual json/urlencoded middlewares')
  16. /**
  17. * Path to the parser modules.
  18. */
  19. var parsersDir = path.join(__dirname, 'lib', 'types')
  20. /**
  21. * Auto-load bundled parsers with getters.
  22. */
  23. fs.readdirSync(parsersDir).forEach(function onfilename(filename) {
  24. if (!/\.js$/.test(filename)) return
  25. var loc = path.resolve(parsersDir, filename)
  26. var mod
  27. var name = path.basename(filename, '.js')
  28. function load() {
  29. if (mod) {
  30. return mod
  31. }
  32. return mod = require(loc)
  33. }
  34. Object.defineProperty(exports, name, {
  35. configurable: true,
  36. enumerable: true,
  37. get: load
  38. })
  39. })
  40. /**
  41. * Create a middleware to parse json and urlencoded bodies.
  42. *
  43. * @param {object} [options]
  44. * @return {function}
  45. * @deprecated
  46. * @api public
  47. */
  48. function bodyParser(options){
  49. var opts = {}
  50. options = options || {}
  51. // exclude type option
  52. for (var prop in options) {
  53. if ('type' !== prop) {
  54. opts[prop] = options[prop]
  55. }
  56. }
  57. var _urlencoded = exports.urlencoded(opts)
  58. var _json = exports.json(opts)
  59. return function bodyParser(req, res, next) {
  60. _json(req, res, function(err){
  61. if (err) return next(err);
  62. _urlencoded(req, res, next);
  63. });
  64. }
  65. }