diff --git a/lib/component-orchestrator/package.json b/lib/component-orchestrator/package.json index 865a7fb2c..a2fa35af0 100644 --- a/lib/component-orchestrator/package.json +++ b/lib/component-orchestrator/package.json @@ -1,6 +1,6 @@ { "name": "@openintegrationhub/component-orchestrator", - "version": "1.2.4", + "version": "1.2.5", "description": "Orchestrates cluster resources", "main": "src/index.js", "scripts": { diff --git a/lib/component-orchestrator/src/ComponentOrchestrator.js b/lib/component-orchestrator/src/ComponentOrchestrator.js index 2ebe6d623..68b5ef192 100644 --- a/lib/component-orchestrator/src/ComponentOrchestrator.js +++ b/lib/component-orchestrator/src/ComponentOrchestrator.js @@ -341,7 +341,6 @@ class ComponentOrchestrator { apiKey, msg, }) { - const nodeProperties = flow.getPropertiesByNodeId(stepId) const functionName = nodeProperties.function @@ -378,6 +377,17 @@ class ComponentOrchestrator { metadata: msg.metadata || {}, }; + // add webhook specific keys if method exists + if (msg.method) { + newMessage.method = msg.method; + newMessage.headers = msg.headers || {}; + newMessage.params = msg.params || {}; + newMessage.query = msg.query || {}; + newMessage.url = msg.url || ''; + newMessage.originalUrl = msg.originalUrl || ''; + newMessage.pathSuffix = msg.pathSuffix || ''; + } + let config; if (component.isGlobal) { diff --git a/lib/webhooks/package.json b/lib/webhooks/package.json index 7b5847ac0..8168f1e01 100644 --- a/lib/webhooks/package.json +++ b/lib/webhooks/package.json @@ -1,7 +1,7 @@ { "name": "@openintegrationhub/webhooks", "description": "webhooks", - "version": "1.2.0", + "version": "1.2.1", "author": "Open Integration Hub", "engines": { "node": ">=12" diff --git a/lib/webhooks/spec/http-api.spec.js b/lib/webhooks/spec/http-api.spec.js index 3137fe57c..4bde1e726 100644 --- a/lib/webhooks/spec/http-api.spec.js +++ b/lib/webhooks/spec/http-api.spec.js @@ -105,7 +105,7 @@ describe('HttpApi', () => { expect(msgArg).to.be.a('object'); expect(msgArg).to.to.have.all.keys([ 'attachments', - 'body', + 'data', 'headers', 'id', 'metadata', @@ -123,7 +123,7 @@ describe('HttpApi', () => { expect(msgArg.url).to.equal('/hook/123?a=b'); expect(msgArg.params).to.deep.equal({}); expect(msgArg.query).to.deep.equal({a: 'b'}); - expect(msgArg.body).to.deep.equal({ + expect(msgArg.data).to.deep.equal({ a: 'b' }); expect(msgArg.id).to.be.a('string'); @@ -197,7 +197,7 @@ describe('HttpApi', () => { expect(msgArg).to.be.a('object'); expect(msgArg).to.to.have.all.keys([ 'attachments', - 'body', + 'data', 'headers', 'id', 'metadata', @@ -215,7 +215,7 @@ describe('HttpApi', () => { expect(msgArg.url).to.equal('/hook/123?a=b'); expect(msgArg.params).to.deep.equal({}); expect(msgArg.query).to.deep.equal({a: 'b'}); - expect(msgArg.body).to.deep.equal({ + expect(msgArg.data).to.deep.equal({ some: 'data' }); expect(msgArg.id).to.be.a('string'); diff --git a/lib/webhooks/spec/request-handlers/get.spec.js b/lib/webhooks/spec/request-handlers/get.spec.js index 7c1ed8c00..0b9e0ff17 100644 --- a/lib/webhooks/spec/request-handlers/get.spec.js +++ b/lib/webhooks/spec/request-handlers/get.spec.js @@ -88,7 +88,7 @@ describe('Get Request Handler', () => { delete msg.id; expect(msg).to.deep.equal({ attachments: {}, - body: { + data: { some: 'query' }, headers: { @@ -259,7 +259,7 @@ describe('Get Request Handler', () => { expect(msg).to.be.a('object'); expect(msg).to.to.have.all.keys([ 'attachments', - 'body', + 'data', 'headers', 'id', 'metadata', @@ -277,7 +277,7 @@ describe('Get Request Handler', () => { expect(msg.url).to.equal('/?a=b'); expect(msg.params).to.deep.equal({}); expect(msg.query).to.deep.equal({a: 'b'}); - expect(msg.body).to.deep.equal({a: 'b'}); + expect(msg.data).to.deep.equal({a: 'b'}); expect(msg.id).to.be.a('string'); expect(msg.headers).to.have.all.keys([ 'accept-encoding', diff --git a/lib/webhooks/spec/request-handlers/post.spec.js b/lib/webhooks/spec/request-handlers/post.spec.js index c35237dac..3d9cf56bd 100644 --- a/lib/webhooks/spec/request-handlers/post.spec.js +++ b/lib/webhooks/spec/request-handlers/post.spec.js @@ -91,7 +91,7 @@ describe('Post Request Handler', () => { delete msg.id; expect(msg).to.deep.equal({ attachments: {}, - body: { + data: { some: 'body' }, headers: { @@ -262,7 +262,7 @@ describe('Post Request Handler', () => { expect(msg).to.be.a('object'); expect(msg).to.to.have.all.keys([ 'attachments', - 'body', + 'data', 'headers', 'id', 'metadata', @@ -280,7 +280,7 @@ describe('Post Request Handler', () => { expect(msg.url).to.equal('/?a=b'); expect(msg.params).to.deep.equal({}); expect(msg.query).to.deep.equal({a: 'b'}); - expect(msg.body).to.deep.equal({ + expect(msg.data).to.deep.equal({ data: { some: 'payload' } diff --git a/lib/webhooks/src/request-handlers/post.js b/lib/webhooks/src/request-handlers/post.js index e35ad9cb2..3db8f8940 100644 --- a/lib/webhooks/src/request-handlers/post.js +++ b/lib/webhooks/src/request-handlers/post.js @@ -1,6 +1,5 @@ const _ = require('lodash'); const BaseHandler = require('./base'); -const { messages } = require('elasticio-node'); //@todo: replace with OIH??? const MessagePublishers = require('../message-publishers'); const assert = require('assert'); const uuid = require('uuid/v1'); @@ -14,6 +13,19 @@ const REQUEST_FIELDS = [ 'body' ]; +function newEmptyMessage() { + + var msg = { + id: uuid(), + attachments: {}, + data: {}, + headers: {}, + metadata: {} + }; + + return msg; +} + /** * Configuration object for a client response. * @typedef {Object} ClientResponseConfig @@ -70,10 +82,14 @@ class PostHandler extends BaseHandler { const log = this.getLogger(); log.trace('Creating webhook msg from request'); - const msg = messages.newEmptyMessage(); + const msg = newEmptyMessage(); _.each(REQUEST_FIELDS, (key) => { - msg[key] = req[key]; + if (key === 'body') { + msg.data = req[key]; + } else { + msg[key] = req[key]; + } }); msg.params = {}; @@ -85,13 +101,13 @@ class PostHandler extends BaseHandler { //extracting pathSuffix from url that may contain get parameters msg.pathSuffix = req.path.replace(new RegExp(`/hook/${req.params.taskId}`, 'g'), ''); - if (typeof msg.body === 'string' || Buffer.isBuffer(msg.body)) { - // Body should be JSON object and not string and not buffer - msg.body = {}; + if (typeof msg.data === 'string' || Buffer.isBuffer(msg.data)) { + // data should be JSON object and not string and not buffer + msg.data = {}; } if (req.method === 'GET') { - msg.body = req.query; + msg.data = req.query; } log.debug({ msg: msg }, 'Message to be pushed to the webhook queue'); diff --git a/services/component-orchestrator/package.json b/services/component-orchestrator/package.json index 5c2a2cbf3..a0ff90022 100644 --- a/services/component-orchestrator/package.json +++ b/services/component-orchestrator/package.json @@ -1,6 +1,6 @@ { "name": "component-orchestrator", - "version": "1.2.6", + "version": "1.2.7", "description": "Resource coordinator", "main": "index.js", "scripts": { diff --git a/services/webhooks/package.json b/services/webhooks/package.json index 73b075341..c30e1ff62 100644 --- a/services/webhooks/package.json +++ b/services/webhooks/package.json @@ -1,6 +1,6 @@ { "name": "webhooks", - "version": "1.1.1", + "version": "1.1.2", "description": "Standalone version of elastic.io platform", "main": "index.js", "scripts": {