This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.8 KiB
76 lines
1.8 KiB
/** |
|
* Wrapper for the growly module |
|
*/ |
|
var checkGrowl = require('../lib/checkGrowl'); |
|
var utils = require('../lib/utils'); |
|
var growly = require('growly'); |
|
|
|
var EventEmitter = require('events').EventEmitter; |
|
var util = require('util'); |
|
|
|
var errorMessageNotFound = |
|
"Couldn't connect to growl (might be used as a fallback). Make sure it is running"; |
|
|
|
module.exports = Growl; |
|
|
|
var hasGrowl = void 0; |
|
|
|
function Growl(options) { |
|
options = utils.clone(options || {}); |
|
if (!(this instanceof Growl)) { |
|
return new Growl(options); |
|
} |
|
|
|
growly.appname = options.name || 'Node'; |
|
this.options = options; |
|
|
|
EventEmitter.call(this); |
|
} |
|
util.inherits(Growl, EventEmitter); |
|
|
|
Growl.prototype.notify = function(options, callback) { |
|
growly.setHost(this.options.host, this.options.port); |
|
options = utils.clone(options || {}); |
|
|
|
if (typeof options === 'string') { |
|
options = { title: 'node-notifier', message: options }; |
|
} |
|
|
|
callback = utils.actionJackerDecorator(this, options, callback, function( |
|
data |
|
) { |
|
if (data === 'click') { |
|
return 'click'; |
|
} |
|
if (data === 'timedout') { |
|
return 'timeout'; |
|
} |
|
return false; |
|
}); |
|
|
|
options = utils.mapToGrowl(options); |
|
|
|
if (!options.message) { |
|
callback(new Error('Message is required.')); |
|
return this; |
|
} |
|
|
|
options.title = options.title || 'Node Notification:'; |
|
|
|
if (hasGrowl || !!options.wait) { |
|
var localCallback = options.wait ? callback : noop; |
|
growly.notify(options.message, options, localCallback); |
|
if (!options.wait) callback(); |
|
return this; |
|
} |
|
|
|
checkGrowl(growly, function(_, didHaveGrowl) { |
|
hasGrowl = didHaveGrowl; |
|
if (!didHaveGrowl) return callback(new Error(errorMessageNotFound)); |
|
growly.notify(options.message, options); |
|
callback(); |
|
}); |
|
return this; |
|
}; |
|
|
|
function noop() {}
|
|
|