You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- '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;
- };
|