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