UNPKG

1.16 kBJavaScriptView Raw
1/*!
2 * Connect - methodOverride
3 * Copyright(c) 2010 Sencha Inc.
4 * Copyright(c) 2011 TJ Holowaychuk
5 * MIT Licensed
6 */
7
8/**
9 * Module dependencies.
10 */
11
12var deprecate = require('depd')('connect');
13var methodOverride = require('method-override');
14
15/**
16 * Method Override:
17 *
18 * See [method-override](https://github.com/expressjs/method-override)
19 *
20 * @param {String} key
21 * @return {Function}
22 * @api public
23 */
24
25module.exports = function(key){
26 // this is a shim to keep the interface working with method-override@2
27 var opts = { methods: null };
28 var prop = key || '_method';
29 var _headerOverride = methodOverride('X-HTTP-Method-Override', opts);
30 var _bodyOverride = methodOverride(function(req){
31 if (req.body && typeof req.body === 'object' && prop in req.body) {
32 var method = req.body[prop];
33 delete req.body[prop];
34 return method;
35 }
36 }, opts);
37
38 return function(req, res, next){
39 _bodyOverride(req, res, function(err){
40 if (err) return next(err);
41 _headerOverride(req, res, next);
42 });
43 };
44};
45
46module.exports = deprecate.function(module.exports,
47 'methodOverride: use method-override npm module instead');