From 6c75baecb2e83c68ee14a788600f1815f9a3c011 Mon Sep 17 00:00:00 2001 From: jonferreira Date: Thu, 15 Nov 2018 17:11:11 +0000 Subject: [PATCH 1/3] Update messages.json --- .../@node-red/nodes/locales/en-US/messages.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json index a6c6e1da2..5c1f0a142 100644 --- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json @@ -384,7 +384,8 @@ "upload": "Accept file uploads?", "status": "Status code", "headers": "Headers", - "other": "other" + "other": "other", + "usePayloadAsParameters" : "Use payload properties as parameters" }, "setby": "- set by msg.method -", "basicauth": "Use basic authentication", @@ -412,7 +413,8 @@ "deprecated-call":"Deprecated call to __method__", "invalid-transport":"non-http transport requested", "timeout-isnan": "Timeout value is not a valid number, ignoring", - "timeout-isnegative": "Timeout value is negative, ignoring" + "timeout-isnegative": "Timeout value is negative, ignoring", + "invalid-payload": "Invalid payload" }, "status": { "requesting": "requesting" From 21ce23d27d95df733dfc75bae629e9e890833398 Mon Sep 17 00:00:00 2001 From: jonferreira Date: Thu, 15 Nov 2018 17:11:27 +0000 Subject: [PATCH 2/3] Update 21-httprequest.js --- .../@node-red/nodes/core/io/21-httprequest.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js index 594debc2e..87191e846 100644 --- a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js +++ b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js @@ -28,6 +28,7 @@ module.exports = function(RED) { var nodeUrl = n.url; var isTemplatedUrl = (nodeUrl||"").indexOf("{{") != -1; var nodeMethod = n.method || "GET"; + var usePayloadAsParameters = n.usePayloadAsParameters; if (n.tls) { var tlsNode = RED.nodes.getNode(n.tls); } @@ -199,6 +200,22 @@ module.exports = function(RED) { } opts.body = payload; } + + if (method == 'GET' && typeof msg.payload !== "undefined" && usePayloadAsParameters) { + if (typeof msg.payload === "object") { + if(opts.url.indexOf("?") !== -1) { + opts.url += "&" + querystring.stringify(msg.payload); + } else { + opts.url += "?" + querystring.stringify(msg.payload); + } + + } else { + //I'm not sure where to set "httpin.errors.unvalid-payload" :( + node.error(RED._("httpin.errors.invalid-payload"),msg); + return; + } + } + // revert to user supplied Capitalisation if needed. if (opts.headers.hasOwnProperty('content-type') && (ctSet !== 'content-type')) { opts.headers[ctSet] = opts.headers['content-type']; From 86bb5503ab2eb1d7a9e4ec0b88e5e3aeb87f6cba Mon Sep 17 00:00:00 2001 From: jonferreira Date: Thu, 15 Nov 2018 17:11:40 +0000 Subject: [PATCH 3/3] Update 21-httprequest.html --- .../@node-red/nodes/core/io/21-httprequest.html | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html index d4cd94aba..3ab6211ec 100644 --- a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html +++ b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html @@ -25,11 +25,17 @@ +
+
+ + +
+
@@ -149,6 +155,7 @@ name: {value:""}, method:{value:"GET"}, ret: {value:"txt"}, + usePayloadAsParameters: {value: false}, url:{value:"",validate:function(v) { return (v.trim().length === 0) || (v.indexOf("://") === -1) || (v.trim().indexOf("http") === 0)} }, tls: {type:"tls-config",required: false}, proxy: {type:"http proxy",required: false} @@ -179,6 +186,13 @@ $('#node-input-password').val(''); } }); + $("#node-input-method").change(function() { + if ($(this).val() == "GET") { + $(".node-input-usePayloadAsParameters-row").show(); + } else { + $(".node-input-usePayloadAsParameters-row").hide(); + } + }); if (this.credentials.user || this.credentials.has_password) { $('#node-input-useAuth').prop('checked', true); } else {