mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Avoid unnecessary isUtf8 check on HTTP payloads
This commit is contained in:
parent
21b25ffaee
commit
c232bf5ed6
@ -30,34 +30,34 @@ module.exports = function(RED) {
|
|||||||
var typer = require('media-typer');
|
var typer = require('media-typer');
|
||||||
var isUtf8 = require('is-utf8');
|
var isUtf8 = require('is-utf8');
|
||||||
|
|
||||||
function isMIMETypeText(mimeType) {
|
|
||||||
var parsedType = typer.parse(mimeType)
|
|
||||||
|
|
||||||
if (parsedType.type === "text") {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parsedType.subtype === "xml" || parsedType.suffix === "xml") {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function rawBodyParser(req, res, next) {
|
function rawBodyParser(req, res, next) {
|
||||||
if (req._body) { return next(); }
|
if (req._body) { return next(); }
|
||||||
req.body = "";
|
req.body = "";
|
||||||
req._body = true;
|
req._body = true;
|
||||||
|
|
||||||
var textType = isMIMETypeText(req.headers['content-type'])
|
var isText = true;
|
||||||
|
var checkUTF = false;
|
||||||
|
|
||||||
|
if (req.headers['content-type']) {
|
||||||
|
var parsedType = typer.parse(req.headers['content-type'])
|
||||||
|
if (parsedType.type === "text") {
|
||||||
|
isText = true;
|
||||||
|
} else if (parsedType.subtype === "xml" || parsedType.suffix === "xml") {
|
||||||
|
isText = true;
|
||||||
|
} else if (parsedType.type !== "application") {
|
||||||
|
isText = false;
|
||||||
|
} else if (parsedType.subtype !== "octet-stream") {
|
||||||
|
checkUTF = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
getBody(req, {
|
getBody(req, {
|
||||||
length: req.headers['content-length'],
|
length: req.headers['content-length'],
|
||||||
encoding: textType ? "utf8" : null
|
encoding: isText ? "utf8" : null
|
||||||
}, function (err, buf) {
|
}, function (err, buf) {
|
||||||
if (err) { return next(err); }
|
if (err) { return next(err); }
|
||||||
if (!textType && isUtf8(buf)) {
|
if (!isText && checkUTF && isUtf8(buf)) {
|
||||||
buf = buf.toString()
|
buf = buf.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
req.body = buf;
|
req.body = buf;
|
||||||
|
Loading…
Reference in New Issue
Block a user