UNPKG

2.33 kBJavaScriptView Raw
1/**
2 * Notification middleware for `simpleportal.Server`
3 *
4 * @property notificationcenter
5 * @for simpleportal
6 * @type {notificationcenter}
7 * @static
8 */
9
10/**
11 * Notification middleware for `simpleportal.Server`
12 *
13 * @class notificationcenter
14 * @module middleware
15 * @static
16 */
17var simpleportal = require('./simpleportal');
18
19var NotificationCenter= function(options, socketio){
20 var instance = this;
21
22 instance.options = simpleportal.util.extendJSON({}, defaults, options);
23
24 if(instance.options.osnotification)
25 instance.osnotification=true;
26
27 if(instance.options.socketnotification)
28 instance.socketnotification=true;
29
30 if(socketio)
31 instance.socketio;
32};
33
34NotificationCenter.prototype.updateSocketIO = function(socketio){
35 var instance=this;
36
37 if(socketio)
38 instance.socketio;
39}
40
41/**
42 * Description
43 * @method notify
44 * @param {} options
45 */
46NotificationCenter.prototype.notify = function(data){
47 var instance = this;
48
49 if(instance.osnotification && data.message && !data.data)
50 instance.__notify_mac(data);
51
52 if(instance.socketnotification && instance.socketio && data.data)
53 instance.__notify_socketio(data);
54};
55
56/**
57 * To notify using socket io
58 * @method notify_socketio
59 * @param {} data
60 * @private
61 */
62NotificationCenter.prototype.__notify_socketio= function(data){
63 var instance = this;
64
65 if(instance.socketio)
66 instance.socketio.emit('notification', data.data);
67
68 if(data.message||options.data.message)
69 instance.__notify_mac({message:data.message||data.data.message});
70 else if(data.status=='exception')
71 instance.__notify_mac(data.message + ' -- ' + data.exception);
72}
73
74/**
75 * To notify mac os - using node notifier
76 * @method notify_mac
77 * @param {} data
78 * @return
79 */
80NotificationCenter.prototype.__notify_mac = function(data){
81 var instance = this;
82 try{
83 var notifier = require('node-notifier');
84 var nc = new notifier.NotificationCenter();
85
86 var data_ = simpleportal.util.extendJSON({}, instance.options, data);
87
88 nc.notify(data_);
89 }catch(error){
90 console.log(error);
91 }
92}
93
94var defaults={
95 'title': 'Simple portal',
96 'subtitle': 'Notifciation center',
97 'message': '',
98 'sound': 'Funk', // case sensitive
99 'appIcon': __dirname + '/coulson.jpg',
100 'contentImage': __dirname + '/coulson.jpg',
101 'open': 'file://' + __dirname + '/coulson.jpg'
102};
103
104module.exports = NotificationCenter;
\No newline at end of file