UNPKG

all-node-oracle

Version:

A NodeJS and Oracle DB integration, NodeJS act as http gateway for plsql server pages

187 lines (165 loc) 4.05 kB
var fs = require('fs') , uploadDir , crypto = require('crypto') , createHash = crypto.createHash ; process.nextTick(function(){ uploadDir = require('./../cfg.js').upload_dir; }); exports.noop = function(){ ; }; // todo : must support async method, or it will block the only execution thread exports.ensureDir = function(path){ var sects = path.split('/'); var len = sects.length - 1; for (var i = len; i > 0; i--) { var tryPath = uploadDir + sects.slice(0, i).join('/'); try { var stat = fs.statSync(tryPath); // if (stat.isDirectory()) ...; } catch (e) { continue; } break; } for (var j = i; j < len; j++) { tryPath = uploadDir + sects.slice(0, j + 1).join('/'); fs.mkdirSync(tryPath); } }; exports.mergeAdd = function(def, setting){ for (var n in setting) if (!(n in def)) { def[n] = setting[n]; } return def; }; exports.override = function(def, setting){ var cfg = {}; for (var n in def) cfg[n] = (n in setting) ? setting[n] : def[n]; return cfg; }; exports.override2 = function(def, setting){ setting = setting || {}; for (var n in def) if (n in setting) def[n] = setting[n]; else def[n] = def[n]; return def; }; exports.useBase = function(base, params){ for (var n in base) { (n in params) || (params[n] = base[n]); } }; exports.mergeHeaders = function(obj1, obj2){ for (var n in obj2) { var v = obj2[n]; if (v instanceof Array) { var v1 = obj1[n]; if (!v1) { obj1[n] = v; } else if (v1 instanceof String) { obj1[n] = v.unshift(v1); } else { obj1[n] = obj1[n].concat(v); } } else { obj1[n] = v; } } }; exports.find = function(arr, item, func){ func = func || function(p){ return p; }; for (var i = 0, len = arr.length; i < len; i++) { if (func(arr[i]) === item) return i; } return -1; }; exports.makeArray = function(size){ var r = new Array(size); for (var i = 0; i < size; i++) r[i] = i; return r; }; var char0 = String.fromCharCode(0) char0 = '~'; exports.addMap = function(buf, obj, pre){ pre = pre || ''; for (var n in obj) { if (obj.hasOwnProperty(n) && n.substr(0, 2) !== '__') { var v = obj[n]; if (v instanceof Array) { buf.push(pre + n, v.join(char0)); } else if (v !== undefined) { buf.push(pre + n, v); } } } }; exports.formatParam = function(params){ var out = {}; for (var n in params) { if (!(params[n] instanceof Array)) params[n] = [params[n]]; var vals = params[n]; vals.forEach(function(item, i){ vals[i] = encodeURIComponent(item); }); out[n] = vals; } return out; }; exports.dummy = function(){ ; }; var ranges = [ [32, 42], [44, 46], [58, 60], [62, 64], [91, 96], [123, 126] ]; var charMap = []; ranges.forEach(function(span){ for (var i = span[0]; i <= span[1]; i++) { charMap.push(String.fromCharCode(i)); } }); charMap = charMap.join(''); function base64alt(hash){ return hash.replace(/[a-z]/g, function(char){ return charMap[char.charCodeAt(0) - 97]; }); } // console.log(exports.base64alt('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/=')); function hash(value){ return createHash('md5').update(value || '').digest('base64').slice(0, 22); } function hash2(value){ return base64alt(hash(value)); } exports.base64alt = base64alt; exports.hash = hash; exports.hash2 = hash2; exports.random = function(){ return crypto.randomBytes(4).toString('hex'); }; exports.gracefulExit = function(beforeExit){ process.on('SIGTERM', beforeExit); // kill or kill -15 process.on('SIGINT', beforeExit); // Ctrl-C process.on('SIGQUIT', beforeExit); // press quit7 process.on('SIGTSTP', beforeExit); process.on('SIGHUP', beforeExit); // when logout // process.on('SIGKILL', beforeExit); // kill -9 process.on('exit', function(){ console.log('To be exit.'); }); }; if (process.argv[1] === __filename) { console.log(charMap); }