module.exports = Self => { require('../methods/mrw-config/createShipment')(Self); require('../methods/mrw-config/getLabel')(Self); require('../methods/mrw-config/cancelShipment')(Self); const fs = require('fs'); const ejs = require('ejs'); const UserError = require('vn-loopback/util/user-error'); const {DOMParser} = require('xmldom'); const axios = require('axios'); Self.getConfig = async function() { const mrw = await Self.app.models.MrwConfig.findOne(null); if (!mrw) throw new UserError(`MRW service is not configured`); return mrw; }; Self.getTextByTag = function(xmlDoc, tag) { return xmlDoc?.getElementsByTagName(tag)[0]?.textContent; }; Self.sendXmlDoc = async function(path, params, contentType) { const parser = new DOMParser(); const xmlTemplate = fs.readFileSync(path, 'utf-8'); const renderedTemplate = ejs.render(xmlTemplate, params); const data = await axios.post(params.mrw.url, renderedTemplate, { headers: { 'Content-Type': `${contentType}; charset=utf-8` } }); return parser.parseFromString(data.data, 'text/xml'); }; };