import express, { Request, Response } from 'express'; import { basicAuth } from '../middleware/basic-auth'; import { fulljourney } from '../middleware/fulljourney'; import { responsefull } from '../middleware/fulljourney'; const router = express.Router(); router.post( '/api/smartdocs/test', basicAuth, async (req: Request, res: Response) => { let bufdata = '0209D000000500.00BETAALPLANfalse000.000.0000.00CNP20N0.0009H1314198488A09901500.0071572480.000.000.00500.0020.00500.0010.000.797559.88280.0010.002022-07-272022-07-27T02:18:15Z1LTEST1986-04-191Nederlandse09XNVBJ4DW901202401000106111111111truefalse0100.00test@test.comtrueNL96INGB78438428611120003526KV77WINTHONTLNUTRECHTNL1100.0010119992500.000.0011400.001TTESTSP1983-12-19009XNVBJ4DW90120370100010611111111testsp@test.comtrue11120001500.000.0011YAHOO450.00DUR31419848820210208142729NBFRST1001TESTL3526KV77WINTHONTLNUTRECHTNLNL96INGB7843842861NL81ZZZ3007628400Santander Consumer Finance Benelux B.V.3526KV171WinthontlaanUtrechtNL0213646QONNEX FINANCE MEUBELS 9.9%8162NG11LOHUIZERVEENWEGEPENLinfo@qonnexfinance.nl'; let bufflowdata = 'PublishStore-santander/acc/santander/Kifid_ContractKifid_ContractContractModelStore_santander/ModelStore_Santander/Kifid/Contract.lgm1.2cristiaen.schaapcristiaen.schaap7.3.6'; let bufferedResponse: responsefull = await fulljourney( bufdata, bufflowdata ); res.setHeader('Content-Type', bufferedResponse.ContentType); res.setHeader('Content-Disposition', bufferedResponse.ContentDisp); res.send(bufferedResponse.responseBuffer); } ); export { router as testRouter }; --------- import axios from 'axios'; const FormData = require('form-data'); const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); export interface responsefull { responseBuffer: Buffer; ContentType: string; ContentDisp: string; } export const fulljourney = async ( dataKifid: string, flowdataKifid: string ): Promise => { let bufdata = Buffer.from(dataKifid); let bufflowdata = Buffer.from(flowdataKifid); let data = new FormData(); data.append('data', bufdata, 'data2.xml'); data.append('flowdata', bufflowdata, 'flowdata.xml'); data.append( 'modelpath', 'PublishStore-santander/acc//santander/Kifid_Contract/nl-NL/compiled.lgp' ); let config = { method: 'post', maxBodyLength: Infinity, url: 'http://localhost:3001/api/smartdocs/request', auth: { username: 'santander', password: 'santander' }, data: data }; let requestid: { RequestId: string; CorrelationId: number }; await axios.request(config).then((response: any) => { console.log(response.data); requestid = JSON.parse(JSON.stringify(response.data)); }); console.log('sleeping for 10s'); await sleep(10000); console.log('woke up'); let configStatus = { method: 'get', maxBodyLength: Infinity, url: 'http://localhost:3001/api/smartdocs/status/' + requestid!.RequestId, auth: { username: 'santander', password: 'santander' } }; let responseDocument: { Document: { DocumentId: string; }; }; await axios.request(configStatus).then((response) => { console.log(JSON.stringify(response.data)); responseDocument = JSON.parse(JSON.stringify(response.data)); }); console.log(responseDocument!); let bufferedResponse: Buffer; let resfull: responsefull; await axios({ method: 'get', responseType: 'arraybuffer', responseEncoding: 'binary', url: 'http://localhost:3001/api/smartdocs/document/' + requestid!.RequestId + '/' + responseDocument!.Document.DocumentId, auth: { username: 'santander', password: 'santander' } }).then((response) => { bufferedResponse = response.data; resfull = { responseBuffer: bufferedResponse!, ContentType: response.headers['content-type'], ContentDisp: response.headers['content-disposition'] }; }); await axios({ method: 'delete', url: 'http://localhost:3001/api/smartdocs/delete/' + requestid!.RequestId, auth: { username: 'santander', password: 'santander' } }).then((response) => { console.log('request deleted'); }); return resfull!; };