Browse Source

push notifications

activeAddress
Gabriel Bazán 9 years ago
parent
commit
bfc49c94f8
  1. 161
      lib/pushnotificationsservice.js
  2. 17
      pushnotificationsservice/pushnotificationsservice.js
  3. 1
      start.sh
  4. 1
      stop.sh

161
lib/pushnotificationsservice.js

@ -0,0 +1,161 @@
'use strict';
var _ = require('lodash');
var $ = require('preconditions').singleton();
var async = require('async');
var Mustache = require('mustache');
var log = require('npmlog');
log.debug = log.verbose;
var fs = require('fs');
var path = require('path');
var nodemailer = require('nodemailer');
var request = require('request');
var Utils = require('./common/utils');
var Storage = require('./storage');
var MessageBroker = require('./messagebroker');
var Lock = require('./lock');
var BlockchainExplorer = require('./blockchainexplorer');
var Model = require('./model');
var PUSHNOTIFICATION_TYPES = {
'NewCopayer': {
filename: 'new_copayer',
notifyDoer: false,
},
'WalletComplete': {
filename: 'wallet_complete',
notifyDoer: true,
},
'NewTxProposal': {
filename: 'new_tx_proposal',
notifyDoer: false,
},
'NewOutgoingTx': {
filename: 'new_outgoing_tx',
notifyDoer: true,
},
'NewIncomingTx': {
filename: 'new_incoming_tx',
notifyDoer: true,
},
'TxProposalFinallyRejected': {
filename: 'txp_finally_rejected',
notifyDoer: false,
},
};
function PushNotificationService() {};
PushNotificationService.prototype.start = function(opts, cb) {
var self = this;
async.parallel([
function(done) {
self.messageBroker = opts.messageBroker || new MessageBroker(opts.messageBrokerOpts);
self.messageBroker.onMessage(_.bind(self.sendPushNotification, self));
done();
},
], function(err) {
if (err) {
log.error(err);
}
return cb(err);
});
};
PushNotificationService.prototype.sendPushNotification = function(notification, cb) {
console.log(notification);
if (PUSHNOTIFICATION_TYPES[notification.type] == notification.type) {
if (notification.type == 'NewIncomingTx') {
var opts = {};
opts.users = [notification.walletId];
opts.android = {
"collapseKey": "optional",
"data": {
"title": "New incoming transaction",
"message": notification.data.amount + " bits"
}
};
}
if (notification.type == 'NewOutgoingTx') {
var opts = {};
opts.users = [notification.walletId];
opts.android = {
"collapseKey": "optional",
"data": {
"title": "New outgoing transaction",
"message": notification.data.amount + " bits"
}
};
}
if (notification.type == 'NewCopayer') {
var opts = {};
opts.users = [notification.walletId];
opts.android = {
"collapseKey": "optional",
"data": {
"title": "New copayer",
"message": "Copayer: " + notification.data.copayerName + " has joined"
}
};
}
// if (notification.type == 'WalletComplete') {
// var opts = {};
// opts.users = [notification.walletId];
// opts.android = {
// "collapseKey": "optional",
// "data": {
// "title": "Wallet complete",
// "message": "Wallet complete"
// }
// };
// }
if (notification.type == ' NewTxProposal') {
var opts = {};
opts.users = [notification.walletId];
opts.android = {
"collapseKey": "optional",
"data": {
"title": "New proposal"
"message": "New transaction proposal created"
}
};
}
if (notification.type == 'TxProposalFinallyRejected') {
var opts = {};
opts.users = [notification.walletId];
opts.android = {
"collapseKey": "optional",
"data": {
"title": "Rejected"
"message": "Transaction proposal finally rejected"
}
};
}
if (notification.type == ' TxProposalAcceptedBy') {
var opts = {};
opts.users = [notification.walletId];
opts.android = {
"collapseKey": "optional",
"data": {
"title": "Accepted"
"message": "Transaction proposal accepted"
}
};
}
var url = 'http://192.168.1.126:8000/send';
request({
url: url,
method: 'POST',
json: true,
body: opts
}, function(error, response, body) {
console.log(error);
console.log(response.statusCode);
});
}
};
module.exports = PushNotificationService;

17
pushnotificationsservice/pushnotificationsservice.js

@ -0,0 +1,17 @@
#!/usr/bin/env node
'use strict';
var _ = require('lodash');
var log = require('npmlog');
log.debug = log.verbose;
var config = require('../config');
var PushNotificationService = require('../lib/pushnotificationservice');
var PushNotificationService = new PushNotificationService();
PushNotificationService.start(config, function(err) {
if (err) throw err;
console.log('Push Notification Service started');
});

1
start.sh

@ -33,5 +33,6 @@ run_program locker/locker.js pids/locker.pid logs/locker.log
run_program messagebroker/messagebroker.js pids/messagebroker.pid logs/messagebroker.log
run_program bcmonitor/bcmonitor.js pids/bcmonitor.pid logs/bcmonitor.log
run_program emailservice/emailservice.js pids/emailservice.pid logs/emailservice.log
run_program pushnotificationservice/pushnotificationservice.js pids/pushnotificationservice.pid logs/pushnotificationservice.log
run_program bws.js pids/bws.pid logs/bws.log

1
stop.sh

@ -13,6 +13,7 @@ stop_program ()
stop_program pids/bws.pid
stop_program pids/emailservice.pid
stop_program pids/bcmonitor.pid
stop_program pids/pushnotificationservice.pid
stop_program pids/messagebroker.pid
stop_program pids/locker.pid

Loading…
Cancel
Save