Compare commits

..

1 Commits

Author SHA1 Message Date
Stephen McLaughlin
2ccd4b5224 Allow empty string header value
closes #4789
2024-06-24 10:18:01 +01:00
4 changed files with 7 additions and 23 deletions

View File

@@ -132,7 +132,7 @@ in your Node-RED user directory (${RED.settings.userDir}).
const matchingKeys = keys.filter(e => e.toLowerCase() == hn)
const updateKey = (k,v) => {
delete headersObject[k]; //delete incase of case change
if(v) { headersObject[name] = v } //re-add with requested name & value
if(v || v === '') { headersObject[name] = v } //re-add with requested name & value
}
if(matchingKeys.length == 0) {
updateKey(name, value)

View File

@@ -16,18 +16,10 @@
<script type="text/html" data-template-name="split">
<!-- <div class="form-row"><span data-i18n="[html]split.intro"></span></div> -->
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
</div>
<div class="form-row">
<label for="node-input-property"><i class="fa fa-forward"></i> <span data-i18n="split.split"></span></label>
<input type="text" id="node-input-property" style="width:70%;"/>
</div>
<div class="form-row">
<input type="checkbox" id="node-input-addcomplete" style="margin-left:10px; vertical-align:baseline; width:auto;">
<label for="node-input-addcomplete" style="width:auto;" data-i18n="split.addcomplete"></label>
</div>
<div class="form-row"><span data-i18n="[html]split.strBuff"></span></div>
<div class="form-row">
<label for="node-input-splt" style="padding-left:10px; margin-right:-10px;" data-i18n="split.splitUsing"></label>
@@ -51,6 +43,10 @@
<label for="node-input-addname-cb" style="width:auto;" data-i18n="split.addname"></label>
<input type="text" id="node-input-addname" style="width:70%">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
</div>
</script>
<script type="text/javascript">
@@ -65,7 +61,6 @@
arraySpltType: {value:"len"},
stream: {value:false},
addname: {value:"", validate: RED.validators.typedInput({ type: 'msg', allowBlank: true })},
addcomplete: {value:false},
property: {value:"payload",required:true}
},
inputs:1,

View File

@@ -21,17 +21,13 @@ module.exports = function(RED) {
for (var i = 0; i < array.length-1; i++) {
RED.util.setMessageProperty(msg,node.property,array[i]);
msg.parts.index = node.c++;
if (node.stream !== true) {
msg.parts.count = array.length;
if (node.addcomplete === true) { msg.complete = true; }
}
if (node.stream !== true) { msg.parts.count = array.length; }
send(RED.util.cloneMessage(msg));
}
if (node.stream !== true) {
RED.util.setMessageProperty(msg,node.property,array[i]);
msg.parts.index = node.c++;
msg.parts.count = array.length;
if (node.addcomplete === true) { msg.complete = true; }
send(RED.util.cloneMessage(msg));
node.c = 0;
}
@@ -44,7 +40,6 @@ module.exports = function(RED) {
node.stream = n.stream;
node.spltType = n.spltType || "str";
node.addname = n.addname || "";
node.addcomplete = n.addcomplete || false;
node.property = n.property||"payload";
try {
if (node.spltType === "str") {
@@ -116,7 +111,6 @@ module.exports = function(RED) {
if ((node.stream !== true) || (node.remainder.length === node.splt)) {
RED.util.setMessageProperty(msg,node.property,node.remainder);
msg.parts.index = node.c++;
if (node.addcomplete === true) { msg.complete = true; }
send(RED.util.cloneMessage(msg));
node.pendingDones.forEach(d => d());
node.pendingDones = [];
@@ -159,7 +153,6 @@ module.exports = function(RED) {
}
RED.util.setMessageProperty(msg,node.property,m);
msg.parts.index = i;
if (i === count-1 && node.addcomplete === true) { msg.complete = true; }
pos += node.arraySplt;
send(RED.util.cloneMessage(msg));
}
@@ -179,7 +172,6 @@ module.exports = function(RED) {
msg.parts.key = p;
msg.parts.index = j;
msg.parts.count = l;
if (j == l-1 && node.addcomplete === true) { msg.complete = true; }
send(RED.util.cloneMessage(msg));
j += 1;
}
@@ -215,7 +207,6 @@ module.exports = function(RED) {
if ((node.stream !== true) || (node.buffer.length === node.splt)) {
RED.util.setMessageProperty(msg,node.property,node.buffer);
msg.parts.index = node.c++;
if (node.addcomplete === true) { msg.complete = true; }
send(RED.util.cloneMessage(msg));
node.pendingDones.forEach(d => d());
node.pendingDones = [];
@@ -262,7 +253,6 @@ module.exports = function(RED) {
RED.util.setMessageProperty(msg,node.property,buff.slice(p,buff.length));
msg.parts.index = node.c++;
msg.parts.count = node.c++;
if (node.addcomplete === true) { msg.complete = true; }
send(RED.util.cloneMessage(msg));
node.pendingDones.forEach(d => d());
node.pendingDones = [];

View File

@@ -1020,8 +1020,7 @@
"splitUsing": "Split using",
"splitLength": "Fixed length of",
"stream": "Handle as a stream of messages",
"addname": " Copy key to ",
"addcomplete": " Add msg.complete to last element of split."
"addname": " Copy key to "
},
"join": {
"join": "join",