diff --git a/lib/parse-result.js b/lib/parse-result.js index 69d10a7..c54ac63 100644 --- a/lib/parse-result.js +++ b/lib/parse-result.js @@ -11,6 +11,36 @@ const translateRc = require('./translate-rc'); const messageExtractor = require('./message-extractor'); const patternRules = require('./pattern-rules'); +const priceRules = ( + config.partner + && config.partner.price_rules + && Array.isArray(config.partner.price_rules) + && config.partner.price_rules.length + && config.partner.price_rules + .filter((rule) => rule.pattern && !rule.disable && !rule.disabled) + .map((rule) => ({ + pattern: (typeof rule.pattern === 'string') ? new RegExp(rule.pattern) : rule.pattern, + idx: rule.idx, + disable: rule.disable || rule.disabled, + postprocessing: rule.postprocessing, + })) +) || patternRules.price; + +const balanceRules = ( + config.partner + && config.partner.balance_rules + && Array.isArray(config.partner.balance_rules) + && config.partner.balance_rules.length + && config.partner.balance_rules + .filter((rule) => rule.pattern && !rule.disable && !rule.disabled) + .map((rule) => ({ + pattern: (typeof rule.pattern === 'string') ? new RegExp(rule.pattern) : rule.pattern, + idx: rule.idx, + disable: rule.disable || rule.disabled, + postprocessing: rule.postprocessing, + })) +) || patternRules.balance; + module.exports = (xid, trxIdFromCaller, xml, isCallback, remoteIp) => { logger.verbose(`${MODULE_NAME} 58547863: Processing XML message`, { xid, isCallback }); @@ -99,14 +129,14 @@ module.exports = (xid, trxIdFromCaller, xml, isCallback, remoteIp) => { const amount = Number( messageExtractor( - config.partner.price_rules || patternRules.price, + priceRules, messageFromResponse, ) || '', ) || null; const balance = Number( messageExtractor( - config.partner.balance_rules || patternRules.balance, + balanceRules, messageFromResponse, ) || '', ) || null;