1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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);
- }
|