Opal-Estate-Pro/node_modules/body/index.js

48 lines
1.1 KiB
JavaScript
Raw Normal View History

2019-09-13 06:27:52 +02:00
var rawBody = require("raw-body")
var cache = require("continuable-cache")
var parseArguments = require("./parse-arguments.js")
var ONE_MB = 1024 * 1024
var THUNK_KEY = '__npm_body_thunk_cache__';
module.exports = body
function parseBodyThunk(req, res, opts) {
return function thunk(callback) {
var limit = "limit" in opts ? opts.limit : ONE_MB
var contentLength = req.headers ?
Number(req.headers["content-length"]) : null;
rawBody(req, {
limit: limit,
length: contentLength,
encoding: "encoding" in opts ? opts.encoding : true
}, callback);
};
}
function body(req, res, opts, callback) {
var args = parseArguments(req, res, opts, callback)
req = args.req
res = args.res
opts = args.opts
callback = args.callback
var thunk;
if (opts.cache) {
var thunk = req[THUNK_KEY] ||
cache(parseBodyThunk(req, res, opts));
req[THUNK_KEY] = thunk;
} else {
thunk = parseBodyThunk(req, res, opts);
}
if (!callback) {
return thunk;
}
thunk(callback);
}