From 7a59681851b24861116e647f53503bdb49db9439 Mon Sep 17 00:00:00 2001 From: Adhidarma Hadiwinoto <me@adhisimon.org> Date: Wed, 29 Jan 2020 19:25:19 +0700 Subject: [PATCH] destinationCorrector --- lib/command-handler/buy.js | 7 +++++-- lib/destination-corrector/index.js | 25 +++++++++++++++++++++++++ lib/destination-corrector/util.js | 1 + 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 lib/destination-corrector/index.js create mode 100644 lib/destination-corrector/util.js diff --git a/lib/command-handler/buy.js b/lib/command-handler/buy.js index 9ae6042..dd9c8c3 100644 --- a/lib/command-handler/buy.js +++ b/lib/command-handler/buy.js @@ -6,6 +6,7 @@ const logger = require('komodo-sdk/logger'); const commands = require('../command-group'); const commandError = require('./error'); +const destinationCorrector = require('../destination-corrector'); const coreapi = require('../coreapi'); const coreEndpoint = '/prepaid/buy'; @@ -33,15 +34,17 @@ function execute(tokens, params, cb) { logger.verbose('Rearrange tokens', {tokens: tokens}); } + const destination = destinationCorrector((tokens[2] || '').trim()); + const coreParams = { origin: params.origin, report_ip: params.report_ip, report_port: params.report_port, terminal_name: params.from, product_name: (tokens[1] || '').trim().toUpperCase(), - destination: (tokens[2] || '').trim().replace(/^\+62/, '0'), + destination, password: tokens[3], - request_id: `${generateRequestId(tokens[1], tokens[2])}${Number(tokens[4]) ? '_req' + Number(tokens[4]) : ''}`, + request_id: `${generateRequestId(tokens[1], destination)}${Number(tokens[4]) ? '_req' + Number(tokens[4]) : ''}`, postpaid: 0 }; diff --git a/lib/destination-corrector/index.js b/lib/destination-corrector/index.js new file mode 100644 index 0000000..e3292c5 --- /dev/null +++ b/lib/destination-corrector/index.js @@ -0,0 +1,25 @@ +const util = require('./util'); + +module.exports = (val, opts) => { + let result = val; + if (typeof result === 'number') { + result = result.toString(); + } + + if (typeof result !== 'string') return val; + + result = result.trim(); + + if (util.shouldNotProcessed(result)) return result; + + result = result + .replace(/\s+/g, '') + .replace(/-+/g, '') + .replace(/[();]/g, ''); + + if (!opts || !opts.do_not_change_intl_code) { + result = result.replace(/^\+62/, '0'); + } + + return result; +}; diff --git a/lib/destination-corrector/util.js b/lib/destination-corrector/util.js new file mode 100644 index 0000000..013bf09 --- /dev/null +++ b/lib/destination-corrector/util.js @@ -0,0 +1 @@ +exports.shouldNotProcessed = (val) => val.search(/[^0-9\s-()+;]/) >= 0; -- 1.9.0