From 22288c7eace1d955e4a500f037376f777231d4ff Mon Sep 17 00:00:00 2001 From: epacheco Date: Mon, 18 Dec 2023 17:31:19 +0100 Subject: [PATCH] Removed restGetJson and restApiGet component --- .../services/technicalComponentDirectory.js | 4 +- .../workspaceComponentExecutor/restApiGet.js | 14 -- .../workspaceComponentExecutor/restGetJson.js | 117 ------------- main/client/static/application.html | 2 - .../dataFlow/rest-api-get-editor.tag | 110 ------------ .../dataFlow/rest-get-json-editor.tag | 99 ----------- .../services/technicalComponentDirectory.js | 6 +- .../restApiGet.js | 156 ------------------ .../restGetJson.js | 10 -- 9 files changed, 5 insertions(+), 513 deletions(-) delete mode 100644 engine/workspaceComponentExecutor/restApiGet.js delete mode 100644 engine/workspaceComponentExecutor/restGetJson.js delete mode 100644 main/client/static/tag/editorComponents/dataFlow/rest-api-get-editor.tag delete mode 100644 main/client/static/tag/editorComponents/dataFlow/rest-get-json-editor.tag delete mode 100644 main/server/workspaceComponentInitialize/restApiGet.js delete mode 100644 main/server/workspaceComponentInitialize/restGetJson.js diff --git a/engine/services/technicalComponentDirectory.js b/engine/services/technicalComponentDirectory.js index 67181368..23ee46db 100644 --- a/engine/services/technicalComponentDirectory.js +++ b/engine/services/technicalComponentDirectory.js @@ -4,14 +4,13 @@ module.exports = { // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- - restGetJson: require('../workspaceComponentExecutor/restGetJson.js'), objectTransformer: require('../workspaceComponentExecutor/objectTransformer.js'), googleGetJson: require('../workspaceComponentExecutor/googleGetJson.js'), simpleAgregator: require('../workspaceComponentExecutor/simpleAgregator.js'), googleGeoLocaliser: require('../workspaceComponentExecutor/googleGeoLocaliser.js'), cacheNosql: require('../workspaceComponentExecutor/cacheNosql.js'), gouvFrInverseGeo: require('../workspaceComponentExecutor/gouvFrInverseGeo.js'), - restApiGet: require('../workspaceComponentExecutor/restApiGet.js'), + restApiGet: require('../workspaceComponentExecutor/httpProvider.js'), restApiPost: require('../workspaceComponentExecutor/httpProvider.js'), httpProvider: require('../workspaceComponentExecutor/httpProvider.js'), // xmlToObject: require('./workspaceComponentExecutor/xmlToObject.js'), @@ -37,6 +36,7 @@ module.exports = { propertiesMatrix: require('../workspaceComponentExecutor/propertiesMatrix.js'), postConsumer: require('../workspaceComponentExecutor/httpConsumer.js'), httpConsumer: require('../workspaceComponentExecutor/httpConsumer.js'), + restGetJson: require('../workspaceComponentExecutor/httpConsumer.js'), keyToArray: require('../workspaceComponentExecutor/keyToArray.js'), sftpConsumer: require('../workspaceComponentExecutor/sftpConsumer.js'), flat: require('../workspaceComponentExecutor/flat.js'), diff --git a/engine/workspaceComponentExecutor/restApiGet.js b/engine/workspaceComponentExecutor/restApiGet.js deleted file mode 100644 index a0936807..00000000 --- a/engine/workspaceComponentExecutor/restApiGet.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; -class RestGetJson { - constructor () { - this.stepNode = false - } - pull (data, flowData) { - return new Promise((resolve, reject) => { - // console.log('flowData',flowData); - resolve({data:flowData[0].data}) - }) - } -} - -module.exports = new RestGetJson() diff --git a/engine/workspaceComponentExecutor/restGetJson.js b/engine/workspaceComponentExecutor/restGetJson.js deleted file mode 100644 index 5b2a6cc8..00000000 --- a/engine/workspaceComponentExecutor/restGetJson.js +++ /dev/null @@ -1,117 +0,0 @@ -'use strict' -class RestGetJson { - constructor () { - this.url = require('url') - this.http = require('follow-redirects').http - this.https = require('follow-redirects').https - this.stringReplacer = require('../utils/stringReplacer.js') - this.propertyNormalizer = require('../utils/propertyNormalizer.js') - this.xml2js = require('xml2js') - } - - makeRequest (methodRest, specificData, pullParams, flowdata) { - return new Promise((resolve, reject) => { - let urlString = specificData.url - // console.log(flowdata); - urlString = this.stringReplacer.execute(urlString, pullParams, flowdata, true); - // console.log('urlString',JSON.stringify(urlString)); - let headersFlow = {} - if (specificData.headers != undefined) { - for (let header of specificData.headers) { - const value = this.stringReplacer.execute(header.value, pullParams, flowdata, true); - headersFlow[header.key] = value - } - } - - // console.log('urlString',urlString); - - let parsedUrl = this.url.parse(urlString); - // console.log('parsedUrl',parsedUrl); - var defaultHeaders = { - 'Content-Type':'application/json', - 'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/62.0.3202.94 Chrome/62.0.3202.94 Safari/537.36', - 'Cache-Control' : 'private, no-cache, no-store, must-revalidate', - 'Accept' : 'application/xhtml+xml,application/xml,application/json,application/ld+json', - 'SemanticBus-User' : 'test' - } - let requestOptions = { - hostname : parsedUrl.hostname, - path : parsedUrl.path, - port : parsedUrl.port, - method : methodRest, - headers : {...defaultHeaders,...headersFlow} - }; - - // console.log('requestOptions',requestOptions); - - if(specificData.bodyFill==true){ - requestOptions.headers['Content-Length'] = Buffer.from(JSON.stringify(flowdata)).length; - } - // console.log('LENGTH',requestOptions.headers['Content-Length']); - - // requestOptions.headers['Content-Type'] = 'application/json'; - - const requester = urlString.includes('https')?this.https:this.http; - - // console.log('requestOptions',requestOptions); - - let request = requester.request(requestOptions, response => { - let hasResponseFailed = response.statusCode >= 400 - var responseBody = '' - response.resume() - if (hasResponseFailed) { - reject(new Error('Request failed for url ' + urlString + ' with status ' + response.statusCode)) - } else { - response.on('data', chunk => { - // i++; - responseBody += chunk.toString() - }) - - response.on('end', () => { - try { - let contentType = response.headers['content-type'] - if (specificData.overidedContentType != undefined && specificData.overidedContentType.length > 0) { - contentType = specificData.overidedContentType - } - if (contentType.search('xml') != -1) { - this.xml2js.parseString(responseBody, { - attrkey: 'attr', - 'trim': true - }, (err, result) => { - resolve({ - data: this.propertyNormalizer.execute(result) - }) - }) - } else if (contentType.search('json') != -1) { - let responseObject = JSON.parse(responseBody) - resolve({ - data: this.propertyNormalizer.execute(responseObject) - }) - } else { - reject(new Error('unsuported content-type :' + contentType + responseBody)) - } - } catch (e) { - e.displayMessage = ('Data Flow is unparsable') - reject(e) - } - }) - } - }) - - request.on('error', function (e) { - console.log('error',e); - reject(new Error(`connect refused to ${urlString}`)) - }) - if(specificData.bodyFill==true){ - request.write(JSON.stringify(flowdata)); - } - request.end() - }) - } - - pull (data, flowdata, pullParams) { - console.log(data,flowdata) - return this.makeRequest('GET', data.specificData, pullParams, flowdata == undefined ? undefined : flowdata[0].data) - } -} -module.exports = new RestGetJson() diff --git a/main/client/static/application.html b/main/client/static/application.html index e21f97ea..140f8475 100644 --- a/main/client/static/application.html +++ b/main/client/static/application.html @@ -106,9 +106,7 @@ - - diff --git a/main/client/static/tag/editorComponents/dataFlow/rest-api-get-editor.tag b/main/client/static/tag/editorComponents/dataFlow/rest-api-get-editor.tag deleted file mode 100644 index 4e26aa06..00000000 --- a/main/client/static/tag/editorComponents/dataFlow/rest-api-get-editor.tag +++ /dev/null @@ -1,110 +0,0 @@ - - -
- Aide -
- -
{data.type}
-
Ce composant est déprécié, utiliser HTTP Provider à la place
-
-
-
- -
{data.description}
-
-
-
- - -
-
{data._id}-
- -
- - - -
- -
- - - diff --git a/main/client/static/tag/editorComponents/dataFlow/rest-get-json-editor.tag b/main/client/static/tag/editorComponents/dataFlow/rest-get-json-editor.tag deleted file mode 100644 index 7e64c379..00000000 --- a/main/client/static/tag/editorComponents/dataFlow/rest-get-json-editor.tag +++ /dev/null @@ -1,99 +0,0 @@ - - -
- Aide -
- -
{data.type}
-
Ce composant est déprécié, utiliser HTTP Consumer à la place
-
-
-
- -
{data.description}
-
-
-
- - -
- -
-
- - -
- -
- -
-
-
- -
- -
- - -
-
- Ajouter - - -
-
- - - - - - - - - diff --git a/main/server/services/technicalComponentDirectory.js b/main/server/services/technicalComponentDirectory.js index a8e12141..f2200157 100644 --- a/main/server/services/technicalComponentDirectory.js +++ b/main/server/services/technicalComponentDirectory.js @@ -4,14 +4,13 @@ module.exports = { // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- - restGetJson: require('../workspaceComponentInitialize/restGetJson.js'), objectTransformer: require('../workspaceComponentInitialize/objectTransformer.js'), googleGetJson: require('../workspaceComponentInitialize/googleGetJson.js'), simpleAgregator: require('../workspaceComponentInitialize/simpleAgregator.js'), googleGeoLocaliser: require('../workspaceComponentInitialize/googleGeoLocaliser.js'), cacheNosql: require('../workspaceComponentInitialize/cacheNosql.js'), gouvFrInverseGeo: require('../workspaceComponentInitialize/gouvFrInverseGeo.js'), - restApiGet: require('../workspaceComponentInitialize/restApiGet.js'), + // restApiGet: require('../workspaceComponentInitialize/restApiPost.js'), restApiPost: require('../workspaceComponentInitialize/restApiPost.js'), httpProvider: require('../workspaceComponentInitialize/httpProvider.js'), // xmlToObject: require('./workspaceComponentInitialize/xmlToObject.js'), @@ -37,6 +36,7 @@ module.exports = { propertiesMatrix: require('../workspaceComponentInitialize/propertiesMatrix.js'), postConsumer: require('../workspaceComponentInitialize/postConsumer.js'), httpConsumer: require('../workspaceComponentInitialize/httpConsumer.js'), + // restGetJson: require('../workspaceComponentInitialize/httpConsumer.js'), keyToArray: require('../workspaceComponentInitialize/keyToArray.js'), sftpConsumer: require('../workspaceComponentInitialize/sftpConsumer.js'), flat: require('../workspaceComponentInitialize/flat.js'), @@ -70,7 +70,7 @@ module.exports = { initialise: function (router, unSafeRouteur,engineTracer) { // console.log('initialise') this.restApiPost.initialise(unSafeRouteur,engineTracer) // NO SECURE CHANGE ROUTER - this.restApiGet.initialise(unSafeRouteur,engineTracer) // NO SECURE CHANGE ROUTER + // this.restApiGet.initialise(unSafeRouteur,engineTracer) // NO SECURE CHANGE ROUTER this.upload.initialise(router,engineTracer) this.cacheNosql.initialise(router,engineTracer) // NO SECURE CHANGE ROUTER }, diff --git a/main/server/workspaceComponentInitialize/restApiGet.js b/main/server/workspaceComponentInitialize/restApiGet.js deleted file mode 100644 index f5d994f7..00000000 --- a/main/server/workspaceComponentInitialize/restApiGet.js +++ /dev/null @@ -1,156 +0,0 @@ -'use strict' -class RestApiGet { - constructor() { - this.type = 'Get provider' - this.description = 'Exposer un flux de donnée sur une API http GET.' - this.editor = 'rest-api-get-editor' - this.graphIcon = 'Get_provider.svg' - this.stepNode = false - this.workspace_component_lib = require('../../../core/lib/workspace_component_lib') - this.data2xml = require('data2xml'); - this.xmlJS = require('xml-js'); - this.dataTraitment = require('../../../core/dataTraitmentLibrary/index.js') - this.json2yaml = require('json2yaml') - const { pathToRegexp, match, parse, compile } = require("path-to-regexp"); - this.pathToRegexp=pathToRegexp; - this.request = require('request') - this.config = require('../../config.json') - } - - initialise(router, amqp) { - //ALL feature support by restApiPost - // router.get('*', async (req, res, next) => { - // const urlRequiered = req.params[0].split('/')[1] - // const urlRequieredFull = req.params[0].replace('/','') - // const query = req.query - // let targetedComponent - // const regex = /([^-]*)-.*/g - // let componentId = regex.exec(urlRequiered)[1] - // console.log('componentId',componentId); - // let component; - // try { - // let component = await this.workspace_component_lib.get({ - // _id: componentId, - // module: 'restApiGet' - // }); - // if (component != undefined && component.specificData.url != undefined) { - // req.setTimeout(0); - // let keys = [] - // let regexp = this.pathToRegexp(component.specificData.url, keys); - // if (regexp.test(urlRequieredFull)) { - // let values = regexp.exec(urlRequieredFull); - // - // let valueIndex = 1; - // for (let key of keys) { - // let value = values[valueIndex] - // query[key.name] = value - // valueIndex++ - // } - // for (let queryKey in query) { - // try { - // // console.log('1',query[queryKey]); - // query[queryKey] = JSON.parse(query[queryKey]) - // } catch (e) { - // // console.log('2',query[queryKey]); - // } - // } - // }else { - // // console.log('NO MATH!!'); - // } - // - // this.request.post(this.config.engineUrl + '/work-ask/' + component._id, { - // body: { - // queryParams: { - // query: req.query, - // body: req.body, - // headers :req.headers - // } - // }, - // json: true - // } - // , (err, data) => { - // // console.log(err,data); - // try { - // if (err) { - // console.error("restpiIGet request error", err); - // res.status(500).send(err) - // } else { - // if (data.statusCode != 200) { - // res.status(500).send({ - // engineResponse: data.body - // }) - // } else { - // let dataToSend - // try { - // dataToSend = data.body.data - // } catch (e) { - // console.log(e); - // } - // // const dataToSend = data.body.data - // if (component.specificData != undefined) { // exception in previous promise - // if (component.specificData.contentType != undefined) { - // // console.log(component.specificData.contentType); - // if (dataToSend == undefined) { - // res.send(new Error('data in flow is not defined. please check your configuration')) - // } else if (component.specificData.contentType.search('application/vnd.ms-excel') != -1) { - // res.setHeader('content-type', component.specificData.contentType) - // this.dataTraitment.type.buildFile(undefined, JSON.stringify(dataToSend), undefined, true, component.specificData.contentType).then((result) => { - // res.setHeader('Content-disposition', 'attachment; filename=' + component.specificData.url + '.xlsx') - // res.send(result) - // }) - // } else if (component.specificData.contentType.search('rdf') != -1) { - // - // res.setHeader('content-type', component.specificData.contentType) - // this.dataTraitment.type.buildFile(undefined, JSON.stringify(dataToSend), undefined, true, component.specificData.contentType).then((result) => { - // res.setHeader('Content-disposition', 'attachment; filename=' + component.specificData.url + '.xml') - // res.send(result) - // }) - // } else if (component.specificData.contentType.search('xml') != -1) { - // res.setHeader('content-type', component.specificData.contentType) - // let out = this.xmlJS.js2xml(dataToSend, { - // compact: true, - // ignoreComment: true, - // spaces: 0 - // }); - // out = out.replace(/\0/g, ''); - // // console.log('xml out', out); - // // console.log(Buffer.byteLength(out, 'utf8') + " bytes"); - // res.send(out) - // // res.end(); - // } else if (component.specificData.contentType.search('yaml') != -1) { - // res.setHeader('content-type', component.specificData.contentType) - // res.send(this.json2yaml.stringify(dataToSend)); - // } else if (component.specificData.contentType.search('json') != -1) { - // res.setHeader('content-type', component.specificData.contentType) - // var buf = Buffer.from(JSON.stringify(dataToSend)) - // res.send(buf) - // } else { - // res.send(new Error('no supported madiatype')) - // // return ('type mime non géré') - // } - // } else { - // res.send(new Error('content-type have to be set')) - // // return ('type mime non géré') - // } - // } - // } - // } - // } catch (e) { - // console.log('api error after engine call', e); - // res.send(new Error(e.message)) - // } - // - // }); - // } else { - // res.status(404).send('no API for this url'); - // } - // } catch (e) { - // console.log(e); - // res.status(404).send('no API for this url'); - // - // } - // }) - } -} - -module.exports = new RestApiGet() diff --git a/main/server/workspaceComponentInitialize/restGetJson.js b/main/server/workspaceComponentInitialize/restGetJson.js deleted file mode 100644 index 21afb019..00000000 --- a/main/server/workspaceComponentInitialize/restGetJson.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict' -class RestGetJson { - constructor () { - this.type = 'Flow consumer' - this.description = 'Interroger une API REST avec une requête GET qui fournit un flux JSON; XML.' - this.editor = 'rest-get-json-editor' - this.graphIcon = 'Flow_consumer.svg' - } -} -module.exports = new RestGetJson()