From ccdf005d858617f61271cbb3ffb6ef08b05d850f Mon Sep 17 00:00:00 2001 From: Jose Date: Wed, 19 Dec 2018 10:56:30 +0100 Subject: [PATCH 1/4] Added functionality form HTTP requests for url encoded form data --- documentation/plain_rules.md | 24 ++++++++++++++++++++++++ lib/models/postAction.js | 6 ++++++ 2 files changed, 30 insertions(+) diff --git a/documentation/plain_rules.md b/documentation/plain_rules.md index 64bfa820..467a0b5e 100644 --- a/documentation/plain_rules.md +++ b/documentation/plain_rules.md @@ -200,6 +200,8 @@ The `parameters` field can specify * qs: *optional*, an object with fields and values to build the query string of the URL * json: *optional*, an object that will be sent as JSON. String substitution will be performed in the keys and values of the object's fields. If present, it overrides `template` from `action` +* form: *optional*, an object that will be sent as JSON, for url encoded form data. Header "Content-type: application/x-www-form-urlencoded" is advisable to be present + ```json "action":{ @@ -259,6 +261,28 @@ or use the `json` parameter } } ``` +You can also send form encoded data by using the `form` parameter + +```json + "action": { + "type": "post", + "parameters": { + "url": "http://${target_host}:${target_port}/myapp/${id}", + "headers": { + "Content-type": "application/json", + "X-${type}-pressure": "${BloodPressure}" + }, + "qs": { + "${id}": "${BloodPressure}" + }, + "form": { + "meter": "meter", + "id": "id", + "pressure": "pressure" + } + } + } +``` The `template` and `url` fields and both the field names and the field values of `qs` and `headers` and `json` perform [string substitution](#string-substitution-syntax). diff --git a/lib/models/postAction.js b/lib/models/postAction.js index 243dc6d2..7c3d21cb 100644 --- a/lib/models/postAction.js +++ b/lib/models/postAction.js @@ -41,6 +41,8 @@ function buildPostOptions(action, event) { } else if (action.template) { options.text = myutils.expandVar(action.template, event); + }else if (action.parameters.form){ + options.form = myutils.expandObject(action.parameters.form,event); } return options; @@ -62,7 +64,11 @@ function doIt(action, event, callback) { else if (options.text) { requestOptions.body = options.text; } + else if (options.form){ + requestOptions.form = options.form; + + } metrics.IncMetrics(event.service, event.subservice, metrics.actionHttpPost); myutils.requestHelper(options.method.toLowerCase(), requestOptions, function(err, data) { From 90cead0cb939ad9717c55797b8548055fd901484 Mon Sep 17 00:00:00 2001 From: Jose Date: Wed, 19 Dec 2018 10:57:41 +0100 Subject: [PATCH 2/4] code cleaning --- lib/models/postAction.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/models/postAction.js b/lib/models/postAction.js index 7c3d21cb..cbdcbcba 100644 --- a/lib/models/postAction.js +++ b/lib/models/postAction.js @@ -65,9 +65,7 @@ function doIt(action, event, callback) { requestOptions.body = options.text; } else if (options.form){ - requestOptions.form = options.form; - } metrics.IncMetrics(event.service, event.subservice, metrics.actionHttpPost); From 97540226dbeb3dfe1346d93bde8008f47318270e Mon Sep 17 00:00:00 2001 From: Jose Date: Thu, 20 Dec 2018 09:26:20 +0100 Subject: [PATCH 3/4] Indenting code properly --- lib/models/postAction.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/models/postAction.js b/lib/models/postAction.js index cbdcbcba..aaa2eec3 100644 --- a/lib/models/postAction.js +++ b/lib/models/postAction.js @@ -42,7 +42,7 @@ function buildPostOptions(action, event) { else if (action.template) { options.text = myutils.expandVar(action.template, event); }else if (action.parameters.form){ - options.form = myutils.expandObject(action.parameters.form,event); + options.form = myutils.expandObject(action.parameters.form,event); } return options; @@ -65,7 +65,7 @@ function doIt(action, event, callback) { requestOptions.body = options.text; } else if (options.form){ - requestOptions.form = options.form; + requestOptions.form = options.form; } metrics.IncMetrics(event.service, event.subservice, metrics.actionHttpPost); From bf57bdbfd8c2e94431de00c3b490b4f410538090 Mon Sep 17 00:00:00 2001 From: Jose Date: Thu, 20 Dec 2018 09:28:30 +0100 Subject: [PATCH 4/4] Styling with space after comma --- lib/models/postAction.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/models/postAction.js b/lib/models/postAction.js index aaa2eec3..109d6c84 100644 --- a/lib/models/postAction.js +++ b/lib/models/postAction.js @@ -41,8 +41,9 @@ function buildPostOptions(action, event) { } else if (action.template) { options.text = myutils.expandVar(action.template, event); - }else if (action.parameters.form){ - options.form = myutils.expandObject(action.parameters.form,event); + } + else if (action.parameters.form) { + options.form = myutils.expandObject(action.parameters.form, event); } return options;