UNPKG

swiftpass-payment

Version:
70 lines (64 loc) 2.07 kB
var xml2js = require('xml2js'); exports.buildXML = function (json) { var builder = new xml2js.Builder(); return builder.buildObject(json); }; exports.buildSignXML = function (json) { var xmlBody = Object.keys(json).sort().filter(function (key) { return json[key] !== undefined && json[key] !== '' && ['pfx', 'partner_key', 'sign', 'key'].indexOf(key) < 0; }).map(function (key) { return '<' + key + '><![CDATA[' + json[key] + ']]></' + key + '>'; }).join('') + '<sign>' + json.sign + '</sign>'; return '<xml>' + xmlBody + '</xml>'; }; exports.parseXML = function (xml, fn) { var parser = new xml2js.Parser({trim: true, explicitArray: false, explicitRoot: false}); parser.parseString(xml, fn || function (err, result) { }); }; exports.parseRaw = function () { return function (req, res, next) { var buffer = []; req.on('data', function (trunk) { buffer.push(trunk); }); req.on('end', function () { req.rawbody = Buffer.concat(buffer).toString('utf8'); next(); }); req.on('error', function (err) { next(err); }); } }; exports.pipe = function (stream, fn) { var buffers = []; stream.on('data', function (trunk) { buffers.push(trunk); }); stream.on('end', function () { fn(null, Buffer.concat(buffers)); }); stream.once('error', fn); }; exports.mix = function () { var root = arguments[0]; if (arguments.length == 1) { return root; } for (var i = 1; i < arguments.length; i++) { for (var k in arguments[i]) { root[k] = arguments[i][k]; } } return root; }; exports.generateNonceString = function (length) { var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var maxPos = chars.length; var noceStr = ""; for (var i = 0; i < (length || 32); i++) { noceStr += chars.charAt(Math.floor(Math.random() * maxPos)); } return noceStr; };