2016-04-03 21:25:23 +02:00

146 lines
2.8 KiB
JavaScript

/**
* File: Adawim/helper.js
* Author: Gerrit Linnemann
*
* Swiss-knife.
*/
// load the things we need
var os = require('os')
, dns = require('dns')
, Log = require('./logging')
, Crypto = require('crypto');
exports.timeSince = function timeSince(date) {
var seconds = Math.floor((new Date() - date) / 1000);
var interval = Math.floor(seconds / 31536000);
if (interval > 1) {
return interval + " years";
}
interval = Math.floor(seconds / 2592000);
if (interval > 1) {
return interval + " months";
}
interval = Math.floor(seconds / 86400);
if (interval > 1) {
return interval + " days";
}
interval = Math.floor(seconds / 3600);
if (interval > 1) {
return interval + " hours";
}
interval = Math.floor(seconds / 60);
if (interval > 1) {
return interval + " minutes";
}
return Math.floor(seconds) + " seconds";
}
exports.isResultAvailable = function(res) {
return (
typeof res !== 'undefined' &&
res != null &&
typeof res.result !== 'undefined' &&
res.result != null
);
}
exports.isTypeAvailable = function(res) {
return (
typeof res !== 'undefined' &&
res != null &&
typeof res.type !== 'undefined' &&
res.type != null
);
}
exports.isJSON = function(toCheck) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
exports.isDefinedAndNotNull = function(toCheck) {
return (
typeof toCheck !== 'undefined' &&
toCheck != null
);
}
exports.cnt = function(db) {
var cnt = 0;
if(db.constructor === Array) { // do it the array-way
cnt = db.length;
} else { // oh boy, no array ...
var cnt_ = 0;
for (var key_ in db) { cnt_++; }
cnt = cnt_;
}
return cnt;
}
exports.each = function(db, callback) {
if(db.constructor === Array) { // do it the array-way
for(i=0; i < db.length; i++) {
var entry = db[i];
var isLast = ((i+1) == db.length);
callback(entry, isLast);
}
} else { // oh boy, no array ...
var cnt_ = 0;
for (var key_ in db) { cnt_++; }
var cnt = 0;
for (var key in db) {
cnt++;
var entry = db[key];
callback(entry, (cnt_==cnt));
}
}
}
exports.checkValueEquality = function(foo, bar) {
return doValueEqualityCheck(foo, bar);
}
exports.simpleHash = function(foo) {
var hash = Crypto.createHash('md5').update(foo).digest('hex');
return hash;
}
/* private */
function doValueEqualityCheck(foo, bar) {
var key;
for(key in foo) {
Log.debug( "Compare \"" + foo[key] + "\" with \"" + bar[key] + "\" for key \"" + key + "\"" );
if(typeof foo[key] === 'object' && typeof bar[key] === 'object') {
var isEquals = doValueEqualityCheck(foo, bar);
if(!isEquals) {
return false;
}
} else {
if(foo[key].localeCompare(bar[key]) != 0) {
return false;
}
}
}
return true;
}