Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const xmlParser = require('./xmlParser');
- const utTemplate = require('ut-template');
- const UtCrypt = require('ut-core/crypt');
- let crypt;
- function getCrypt(cryptKey) {
- if (!crypt) {
- crypt = new UtCrypt({cryptParams: {password: cryptKey}});
- }
- return crypt;
- }
- function decryptPassword(encryptedPassword, cryptArgs, cryptKey) {
- var cryptArgsObj = JSON.parse(cryptArgs);
- cryptArgsObj.password = cryptKey;
- return crypt.decrypt(encryptedPassword, cryptArgsObj);
- }
- let bus;
- module.exports = {
- id: 't24/malawi',
- createPort: require('ut-port-http'),
- headers: {
- 'content-type': 'text/xml',
- 'charset': 'utf-8'
- },
- method: 'POST',
- parseResponse: false,
- namespace: ['cbs'],
- start: function() {
- bus = this.bus;
- getCrypt(this.bus.config.masterCryptKey);
- },
- receive: function(msg, $meta) {
- const templateName = $meta.opcode;
- const xml = msg.payload;
- console.log('<<<<<<<<<<RESPONSE>>>>>>>>>>>');
- console.log(xml);
- console.log('<<<<<<<<<<RESPONSE>>>>>>>>>>>');
- if ($meta.mtid === 'error') {
- if (msg.cause && msg.cause.body) {
- return xmlParser.xml2js(msg.cause.body)
- .then(function(obj) {
- throw new Error('T24 Error: \n' + obj.Envelope.Body.Fault.faultstring._);
- });
- } else {
- throw new Error('T24 Internal Server Error');
- }
- }
- return xmlParser.parse(templateName, xml)
- .then(res => {
- if (res.success === 'Success') {
- return res;
- } else if (res.messages && typeof res.messages === 'string') {
- throw new Error('T24 Error: \n' + res.messages);
- } else if (Array.isArray(res.messages) && res.messages.length) {
- throw new Error('T24 Error: \n' + res.messages.join('\n'));
- }
- return res;
- });
- },
- send: function(msg, $meta) {
- msg.headers = msg.headers || {};
- const isSuperAdmin = !$meta.auth || ($meta.auth.permission && $meta.auth.permission[0] && $meta.auth.permission[0].actionId === '%');
- if (isSuperAdmin) {
- msg.username = this.config.username;
- msg.password = this.config.password;
- }
- const externalCredentialsOverride = $meta && $meta.externalCredentialsOverride && $meta.externalCredentialsOverride[this.config.id];
- if (externalCredentialsOverride) {
- msg.username = externalCredentialsOverride.username;
- msg.password = externalCredentialsOverride.password;
- }
- const actorId = externalCredentialsOverride
- ? externalCredentialsOverride.actorId
- : $meta && $meta.auth && $meta.auth.actorId;
- const promiseCredentials = actorId
- ? bus.importMethod('user.externalCredential.get')({actorId, externalSystemName: this.config.id})
- : Promise.resolve();
- return promiseCredentials
- .then(res => {
- const externalCredentials = res && Array.isArray(res.externalCredential) && res.externalCredential[0];
- if (externalCredentials && externalCredentials.userName && externalCredentials.password && externalCredentials.cryptArgs) {
- msg.username = externalCredentialsOverride && externalCredentialsOverride.username
- ? externalCredentialsOverride.username
- : externalCredentials.userName;
- msg.password = externalCredentialsOverride && externalCredentialsOverride.password
- ? externalCredentialsOverride.password
- : decryptPassword(externalCredentials.password, externalCredentials.cryptArgs, bus.config.masterCryptKey);
- }
- const template = utTemplate.load(
- require.resolve('./templates/send/' + $meta.opcode + '.xml.marko')
- );
- return template.render(msg);
- })
- .then(function(response) {
- msg.payload = response;
- console.log('<<<<<<<<<<REQUEST>>>>>>>>>>>');
- console.log(response);
- console.log('<<<<<<<<<<REQUEST>>>>>>>>>>>');
- $meta.opcode = msg.opcode || $meta.opcode;
- return msg;
- });
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement