| Server IP : 34.87.99.72 / Your IP : 216.73.217.31 Web Server : Apache/2.4.46 (Unix) OpenSSL/1.1.1n System : Linux zlock-bitnami-lamp-prod-v2-vm 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 User : bitnami ( 1000) PHP Version : 7.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /opt/bitnami/apache/htdocs/app/node_modules/webpack-dev-middleware/dist/utils/ |
Upload File : |
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = handleRangeHeaders;
var _rangeParser = _interopRequireDefault(require("range-parser"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function handleRangeHeaders(context, content, req, res) {
// assumes express API. For other servers, need to add logic to access
// alternative header APIs
if (res.set) {
res.set('Accept-Ranges', 'bytes');
} else {
res.setHeader('Accept-Ranges', 'bytes');
}
let range; // Express API
if (req.get) {
range = req.get('range');
} // Node.js API
else {
({
range
} = req.headers);
}
if (range) {
const ranges = (0, _rangeParser.default)(content.length, range); // unsatisfiable
if (ranges === -1) {
// Express API
if (res.set) {
res.set('Content-Range', `bytes */${content.length}`);
res.status(416);
} // Node.js API
else {
// eslint-disable-next-line no-param-reassign
res.statusCode = 416;
res.setHeader('Content-Range', `bytes */${content.length}`);
}
} else if (ranges === -2) {
// malformed header treated as regular response
context.logger.error('A malformed Range header was provided. A regular response will be sent for this request.');
} else if (ranges.length !== 1) {
// multiple ranges treated as regular response
context.logger.error('A Range header with multiple ranges was provided. Multiple ranges are not supported, so a regular response will be sent for this request.');
} else {
// valid range header
const {
length
} = content; // Express API
if (res.set) {
// Content-Range
res.status(206);
res.set('Content-Range', `bytes ${ranges[0].start}-${ranges[0].end}/${length}`);
} // Node.js API
else {
// Content-Range
// eslint-disable-next-line no-param-reassign
res.statusCode = 206;
res.setHeader('Content-Range', `bytes ${ranges[0].start}-${ranges[0].end}/${length}`);
} // eslint-disable-next-line no-param-reassign
content = content.slice(ranges[0].start, ranges[0].end + 1);
}
}
return content;
}