1234567891011121314151617181920212223242526272829303132 |
- 'use strict';
- const fs = require('fs');
- const util = require('util');
- const is = require('@sindresorhus/is');
- const isFormData = require('./is-form-data');
-
- module.exports = async options => {
- const {body} = options;
-
- if (options.headers['content-length']) {
- return Number(options.headers['content-length']);
- }
-
- if (!body && !options.stream) {
- return 0;
- }
-
- if (is.string(body)) {
- return Buffer.byteLength(body);
- }
-
- if (isFormData(body)) {
- return util.promisify(body.getLength.bind(body))();
- }
-
- if (body instanceof fs.ReadStream) {
- const {size} = await util.promisify(fs.stat)(body.path);
- return size;
- }
-
- return null;
- };
|