diff --git a/xmlout.js b/xmlout.js index 1ad27dc..e744ccd 100644 --- a/xmlout.js +++ b/xmlout.js @@ -168,6 +168,24 @@ function _topupRequest(task, pendingOnConnectError) { }); } +function snSanitizer(sn) { + if (!sn && typeof sn === 'string') { + return; + } + + sn = sn.replace(/[^A-Z0-9\/]/g, '-'); + sn = sn.replace(/-+/g, '-'); + sn = sn.replace(/^-+/, ''); + sn = sn.replace(/-+$/, ''); + sn = sn.trim(); + + return sn; +} + +function msgSanitizer(msg) { + return msg.replace(/;\s*SN=.+?;/, '; ').trim(); +} + function prefixMessageWithSN(data) { if (data['RESPONSECODE'] != '00') { @@ -188,16 +206,11 @@ function prefixMessageWithSN(data) { } } + sn = snSanitizer(sn); + if (sn) { - //sn = sn.replace(/ /g, '-'); - //sn = sn.replace(/[\()]/g, '-'); - sn = sn.replace(/[^A-Z0-9\/]/g, '-'); - sn = sn.replace(/-+/g, '-'); - sn = sn.replace(/^-+/, ''); - sn = sn.replace(/-+$/, ''); - sn = sn.replace(/;\s*SN=.+?;/, '; '); - sn = sn.trim(); - return 'SN=' + sn + '; ' + data['MESSAGE']; + msg = 'SN=' + sn + '; ' + data['MESSAGE']; + return msgSanitizer(msg); } return data['MESSAGE'];