mirror of
				https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
				synced 2025-11-04 15:05:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			157 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*!
 | 
						|
 * body-parser
 | 
						|
 * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
						|
 * MIT Licensed
 | 
						|
 */
 | 
						|
 | 
						|
'use strict'
 | 
						|
 | 
						|
/**
 | 
						|
 * Module dependencies.
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
 | 
						|
var deprecate = require('depd')('body-parser')
 | 
						|
 | 
						|
/**
 | 
						|
 * Cache of loaded parsers.
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
 | 
						|
var parsers = Object.create(null)
 | 
						|
 | 
						|
/**
 | 
						|
 * @typedef Parsers
 | 
						|
 * @type {function}
 | 
						|
 * @property {function} json
 | 
						|
 * @property {function} raw
 | 
						|
 * @property {function} text
 | 
						|
 * @property {function} urlencoded
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Module exports.
 | 
						|
 * @type {Parsers}
 | 
						|
 */
 | 
						|
 | 
						|
exports = module.exports = deprecate.function(bodyParser,
 | 
						|
  'bodyParser: use individual json/urlencoded middlewares')
 | 
						|
 | 
						|
/**
 | 
						|
 * JSON parser.
 | 
						|
 * @public
 | 
						|
 */
 | 
						|
 | 
						|
Object.defineProperty(exports, 'json', {
 | 
						|
  configurable: true,
 | 
						|
  enumerable: true,
 | 
						|
  get: createParserGetter('json')
 | 
						|
})
 | 
						|
 | 
						|
/**
 | 
						|
 * Raw parser.
 | 
						|
 * @public
 | 
						|
 */
 | 
						|
 | 
						|
Object.defineProperty(exports, 'raw', {
 | 
						|
  configurable: true,
 | 
						|
  enumerable: true,
 | 
						|
  get: createParserGetter('raw')
 | 
						|
})
 | 
						|
 | 
						|
/**
 | 
						|
 * Text parser.
 | 
						|
 * @public
 | 
						|
 */
 | 
						|
 | 
						|
Object.defineProperty(exports, 'text', {
 | 
						|
  configurable: true,
 | 
						|
  enumerable: true,
 | 
						|
  get: createParserGetter('text')
 | 
						|
})
 | 
						|
 | 
						|
/**
 | 
						|
 * URL-encoded parser.
 | 
						|
 * @public
 | 
						|
 */
 | 
						|
 | 
						|
Object.defineProperty(exports, 'urlencoded', {
 | 
						|
  configurable: true,
 | 
						|
  enumerable: true,
 | 
						|
  get: createParserGetter('urlencoded')
 | 
						|
})
 | 
						|
 | 
						|
/**
 | 
						|
 * Create a middleware to parse json and urlencoded bodies.
 | 
						|
 *
 | 
						|
 * @param {object} [options]
 | 
						|
 * @return {function}
 | 
						|
 * @deprecated
 | 
						|
 * @public
 | 
						|
 */
 | 
						|
 | 
						|
function bodyParser (options) {
 | 
						|
  // use default type for parsers
 | 
						|
  var opts = Object.create(options || null, {
 | 
						|
    type: {
 | 
						|
      configurable: true,
 | 
						|
      enumerable: true,
 | 
						|
      value: undefined,
 | 
						|
      writable: true
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  var _urlencoded = exports.urlencoded(opts)
 | 
						|
  var _json = exports.json(opts)
 | 
						|
 | 
						|
  return function bodyParser (req, res, next) {
 | 
						|
    _json(req, res, function (err) {
 | 
						|
      if (err) return next(err)
 | 
						|
      _urlencoded(req, res, next)
 | 
						|
    })
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Create a getter for loading a parser.
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
 | 
						|
function createParserGetter (name) {
 | 
						|
  return function get () {
 | 
						|
    return loadParser(name)
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Load a parser module.
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
 | 
						|
function loadParser (parserName) {
 | 
						|
  var parser = parsers[parserName]
 | 
						|
 | 
						|
  if (parser !== undefined) {
 | 
						|
    return parser
 | 
						|
  }
 | 
						|
 | 
						|
  // this uses a switch for static require analysis
 | 
						|
  switch (parserName) {
 | 
						|
    case 'json':
 | 
						|
      parser = require('./lib/types/json')
 | 
						|
      break
 | 
						|
    case 'raw':
 | 
						|
      parser = require('./lib/types/raw')
 | 
						|
      break
 | 
						|
    case 'text':
 | 
						|
      parser = require('./lib/types/text')
 | 
						|
      break
 | 
						|
    case 'urlencoded':
 | 
						|
      parser = require('./lib/types/urlencoded')
 | 
						|
      break
 | 
						|
  }
 | 
						|
 | 
						|
  // store to prevent invoking require()
 | 
						|
  return (parsers[parserName] = parser)
 | 
						|
}
 |