root / HServer / 00.Server / 00.Program / node_modules / body-parser / index.js
이력 | 보기 | 이력해설 | 다운로드 (2.59 KB)
| 1 | /*!
 | 
|---|---|
| 2 |  * body-parser
 | 
| 3 |  * Copyright(c) 2014-2015 Douglas Christopher Wilson
 | 
| 4 |  * MIT Licensed
 | 
| 5 |  */
 | 
| 6 |  | 
| 7 | 'use strict'
 | 
| 8 |  | 
| 9 | /**
 | 
| 10 |  * Module dependencies.
 | 
| 11 |  * @private
 | 
| 12 |  */
 | 
| 13 |  | 
| 14 | var deprecate = require('depd')('body-parser') | 
| 15 |  | 
| 16 | /**
 | 
| 17 |  * Cache of loaded parsers.
 | 
| 18 |  * @private
 | 
| 19 |  */
 | 
| 20 |  | 
| 21 | var parsers = Object.create(null) | 
| 22 |  | 
| 23 | /**
 | 
| 24 |  * @typedef Parsers
 | 
| 25 |  * @type {function}
 | 
| 26 |  * @property {function} json
 | 
| 27 |  * @property {function} raw
 | 
| 28 |  * @property {function} text
 | 
| 29 |  * @property {function} urlencoded
 | 
| 30 |  */
 | 
| 31 |  | 
| 32 | /**
 | 
| 33 |  * Module exports.
 | 
| 34 |  * @type {Parsers}
 | 
| 35 |  */
 | 
| 36 |  | 
| 37 | exports = module.exports = deprecate.function(bodyParser,
 | 
| 38 |   'bodyParser: use individual json/urlencoded middlewares')
 | 
| 39 |  | 
| 40 | /**
 | 
| 41 |  * JSON parser.
 | 
| 42 |  * @public
 | 
| 43 |  */
 | 
| 44 |  | 
| 45 | Object.defineProperty(exports, 'json', {
 | 
| 46 | configurable: true, | 
| 47 | enumerable: true, | 
| 48 | get: createParserGetter('json') | 
| 49 | }) | 
| 50 |  | 
| 51 | /**
 | 
| 52 |  * Raw parser.
 | 
| 53 |  * @public
 | 
| 54 |  */
 | 
| 55 |  | 
| 56 | Object.defineProperty(exports, 'raw', {
 | 
| 57 | configurable: true, | 
| 58 | enumerable: true, | 
| 59 | get: createParserGetter('raw') | 
| 60 | }) | 
| 61 |  | 
| 62 | /**
 | 
| 63 |  * Text parser.
 | 
| 64 |  * @public
 | 
| 65 |  */
 | 
| 66 |  | 
| 67 | Object.defineProperty(exports, 'text', {
 | 
| 68 | configurable: true, | 
| 69 | enumerable: true, | 
| 70 | get: createParserGetter('text') | 
| 71 | }) | 
| 72 |  | 
| 73 | /**
 | 
| 74 |  * URL-encoded parser.
 | 
| 75 |  * @public
 | 
| 76 |  */
 | 
| 77 |  | 
| 78 | Object.defineProperty(exports, 'urlencoded', {
 | 
| 79 | configurable: true, | 
| 80 | enumerable: true, | 
| 81 | get: createParserGetter('urlencoded') | 
| 82 | }) | 
| 83 |  | 
| 84 | /**
 | 
| 85 |  * Create a middleware to parse json and urlencoded bodies.
 | 
| 86 |  *
 | 
| 87 |  * @param {object} [options]
 | 
| 88 |  * @return {function}
 | 
| 89 |  * @deprecated
 | 
| 90 |  * @public
 | 
| 91 |  */
 | 
| 92 |  | 
| 93 | function bodyParser (options) { | 
| 94 |   var opts = {}
 | 
| 95 |  | 
| 96 |   // exclude type option
 | 
| 97 |   if (options) {
 | 
| 98 | for (var prop in options) { | 
| 99 | if (prop !== 'type') { | 
| 100 | opts[prop] = options[prop] | 
| 101 | } | 
| 102 | } | 
| 103 | } | 
| 104 |  | 
| 105 |   var _urlencoded = exports.urlencoded(opts)
 | 
| 106 |   var _json = exports.json(opts)
 | 
| 107 |  | 
| 108 | return function bodyParser (req, res, next) { | 
| 109 |     _json(req, res, function (err) {
 | 
| 110 | if (err) return next(err) | 
| 111 | _urlencoded(req, res, next) | 
| 112 | }) | 
| 113 | } | 
| 114 | } | 
| 115 |  | 
| 116 | /**
 | 
| 117 |  * Create a getter for loading a parser.
 | 
| 118 |  * @private
 | 
| 119 |  */
 | 
| 120 |  | 
| 121 | function createParserGetter (name) { | 
| 122 | return function get () { | 
| 123 |     return loadParser(name)
 | 
| 124 | } | 
| 125 | } | 
| 126 |  | 
| 127 | /**
 | 
| 128 |  * Load a parser module.
 | 
| 129 |  * @private
 | 
| 130 |  */
 | 
| 131 |  | 
| 132 | function loadParser (parserName) { | 
| 133 |   var parser = parsers[parserName]
 | 
| 134 |  | 
| 135 | if (parser !== undefined) { | 
| 136 |     return parser
 | 
| 137 | } | 
| 138 |  | 
| 139 |   // this uses a switch for static require analysis
 | 
| 140 |   switch (parserName) {
 | 
| 141 | case 'json': | 
| 142 |       parser = require('./lib/types/json')
 | 
| 143 |       break
 | 
| 144 | case 'raw': | 
| 145 |       parser = require('./lib/types/raw')
 | 
| 146 |       break
 | 
| 147 | case 'text': | 
| 148 |       parser = require('./lib/types/text')
 | 
| 149 |       break
 | 
| 150 | case 'urlencoded': | 
| 151 |       parser = require('./lib/types/urlencoded')
 | 
| 152 |       break
 | 
| 153 | } | 
| 154 |  | 
| 155 |   // store to prevent invoking require()
 | 
| 156 |   return (parsers[parserName] = parser)
 | 
| 157 | } |