UNPKG

iso_8583_exos

Version:

A javascript library for messaging in iso 8583 messaging format by Roy Salgado.

114 lines (81 loc) 2.49 kB
/** * This module has helper functions that are useful along side this library. * @module Helpers */ const formatd = require('date-fns'); let util = {}; util.getPostillionLength = function(buf) { let div = buf[0]; let rem = buf[1]; return (256 * div) + rem; }; util.extractPostillionData = function (sent) { // the data is two bytes shorter than what is sent let buf = Buffer.alloc(sent.length - 2); // the first to bytes represents the length, the rest is data for (let i = 2; i < sent.length; i++) { buf[i - 2] = sent[i]; } return buf; }; util.attachPostillionLength = function (_data) { let data = null; // make sure _data is a buffer, if it's a string convert if (!Buffer.isBuffer(_data)) { if (typeof(_data) === 'string') { data = Buffer.alloc(_data.length, _data); } } else { data = _data; } // data is represented by two bytes let length = Buffer.alloc(2); length[0] = data.length / 256; length[1] = data.length % 256; return Buffer.concat([length, data]); }; util.attachDiTimeStamps = function (obj) { if (!obj['7'] || !obj['12'] || !obj['13']){ let time = new Date(); obj['7'] = formatd(time, 'MMDDhhmmss'); obj['12'] = formatd(time, 'hhmmss'); obj['13'] = formatd(time, 'MMDD'); } return obj; }; util.findRequiredFields = function({ json = [], key, processing_code, message_code }) { let requiredFields = []; for ( let i = 0; i < json.length; i++ ) { if (json[i]['processing_code'] === processing_code) { requiredFields = json[i][key]; if ( typeof requiredFields[0] === 'object' ) { for (let key in requiredFields[0]) { if ( key === message_code) { requiredFields = requiredFields[0][key]; } } } } } return requiredFields; }; util.matchValues = function({ required_fields, iso_fields }) { let missing_fields = required_fields; // Refactory to use .filter() for ( let b=0; b < required_fields.length; b++ ) { for ( let i=0; i < iso_fields.length; i++ ) { if ( required_fields[b] === iso_fields[i] ) { missing_fields.splice( b, 1 ); } } } return missing_fields; }; util.extractBits = function(iso) { const bits = []; for (let key in iso) { bits.push(parseInt(key, 10)); } return bits; }; module.exports = util;