ifsc
Version:
This is part of the IFSC toolset released by Razorpay. You can find more details about the entire release at [ifsc.razorpay.com](https://ifsc.razorpay.com). Includes only a validation library as of now.
79 lines (61 loc) • 1.52 kB
JavaScript
const fs = require('fs');
const data = require('../IFSC');
const https = require('https');
const request = require('request');
const BANK = require('./bank');
const BASE_URL = 'https://ifsc.razorpay.com/';
let _validate = function(code) {
if (code.length !== 11) {
return false;
}
if (code[4] !== '0') {
return false;
}
let bankCode = code.slice(0, 4).toUpperCase();
let branchCode = code.slice(5).toUpperCase();
if (!data.hasOwnProperty(bankCode)) {
return false;
}
let list = data[bankCode];
if (isInteger(branchCode)) {
return lookupNumeric(list, branchCode);
}
return lookupString(list, branchCode);
};
let isInteger = function(code) {
return code.match(/^(\d)+$/);
};
let lookupNumeric = function(list, code) {
code = parseInt(code, 10);
if (list.indexOf(code) > -1) {
return true;
}
return false;
};
let lookupString = function(list, code) {
return list.indexOf(code) !== -1;
};
let _createUrl = function(code) {
return BASE_URL + code;
};
let _fetchDetails = function(code, cb) {
let url = _createUrl(code);
return new Promise(function(resolve, reject) {
if (!_validate(code)) {
reject('Invalid IFSC Code');
} else {
request.get({ url: url, json: true }, function(err, res, data) {
if (err) {
reject('API Call failed: ' + err.msg);
} else {
resolve(data);
}
});
}
});
};
module.exports = {
validate: _validate,
fetchDetails: _fetchDetails,
bank: BANK,
};