Commit 45725db9065bdce6f2cf520530bfb9e2b32e7bac
1 parent
205f271b3d
Exists in
master
using sate24/partner-im
Showing 4 changed files with 11 additions and 150 deletions Side-by-side Diff
adaptor-ym.js
... | ... | @@ -10,10 +10,10 @@ function onReady() { |
10 | 10 | YM.login(username, password); |
11 | 11 | } |
12 | 12 | |
13 | -function onLoginSuccessful(data) { | |
13 | +function onOnline(data) { | |
14 | 14 | logger.info('YM login successful', {data: data}); |
15 | - if (callbacks.onLoginSuccessful) { | |
16 | - callbacks.onLoginSuccessful(); | |
15 | + if (callbacks.onOnline) { | |
16 | + callbacks.onOnline(); | |
17 | 17 | } |
18 | 18 | } |
19 | 19 | |
... | ... | @@ -43,7 +43,7 @@ function init(_username, _password, _logger, _callbacks) { |
43 | 43 | callbacks = _callbacks; |
44 | 44 | |
45 | 45 | YM.on('ready', onReady); |
46 | - YM.on('loginSuccessful', onLoginSuccessful); | |
46 | + YM.on('loginSuccessful', onOnline); | |
47 | 47 | YM.on('loginError', onLoginError); |
48 | 48 | YM.on('friendsList', onFriendsList); |
49 | 49 | YM.on('pm', onPM); |
index.js
1 | 1 | var fs = require('fs'); |
2 | 2 | var ini = require('ini'); |
3 | 3 | var expresso = require('sate24-expresso'); |
4 | -var partner = require('./partner-ym'); | |
5 | 4 | var config = ini.parse(fs.readFileSync(__dirname + '/config.ini', 'utf-8')); |
6 | 5 | |
7 | 6 | process.chdir(__dirname); |
... | ... | @@ -9,7 +8,9 @@ process.chdir(__dirname); |
9 | 8 | var logger = require('sate24/logger.js').start(); |
10 | 9 | var HttpServer = require('sate24/httpserver.js'); |
11 | 10 | var aaa = require('sate24/aaa.js'); |
12 | -var partner = require('./partner-ym.js'); | |
11 | +var partner = require('sate24/partner-im.js'); | |
12 | +var imAdaptor = require('./adaptor-ym'); | |
13 | + | |
13 | 14 | |
14 | 15 | var matrix = aaa.prepareMatrix(); |
15 | 16 | |
... | ... | @@ -19,6 +20,7 @@ var options = { |
19 | 20 | 'config': config, |
20 | 21 | 'matrix': matrix, |
21 | 22 | 'partner': partner, |
23 | + 'imAdaptor': imAdaptor | |
22 | 24 | } |
23 | 25 | |
24 | 26 | var httpServer = HttpServer.start(config, options); |
partner-ym.js
... | ... | @@ -1,141 +0,0 @@ |
1 | -var im = require('sate24/im.js') | |
2 | -var YM = require('yahoomessenger'); | |
3 | -var imAdaptor = require('./adaptor-ym'); | |
4 | - | |
5 | -var config; | |
6 | -var aaa; | |
7 | -var logger; | |
8 | -var callbackReport; | |
9 | - | |
10 | -function onLoginSuccessful() { | |
11 | - logger.info('Login successful, resuming aaa communication'); | |
12 | - aaa.resume(); | |
13 | -} | |
14 | - | |
15 | -function onPM(from, msg) { | |
16 | - | |
17 | - if (!im.isAllowedFrom(from)) { | |
18 | - logger.info('Ignoring message from unknown sender', {from: from, msg: msg}); | |
19 | - return; | |
20 | - } | |
21 | - | |
22 | - var remoteProduct = im.getRemoteProductFromMessage(msg); | |
23 | - var destination = im.getDestinationFromMessage(msg); | |
24 | - | |
25 | - if (!remoteProduct && !destination) { | |
26 | - logger.warn('Missing remote product or destination', {remoteProduct: remoteProduct, destination: destination, msg: msg}); | |
27 | - return; | |
28 | - } | |
29 | - | |
30 | - logger.info('Got report from partner', {remoteProduct: remoteProduct, destination: destination, msg: msg}); | |
31 | - im.getTask(remoteProduct, destination, function(err, task) { | |
32 | - if (err) { | |
33 | - logger.warn('Error getting relevant task'); | |
34 | - return; | |
35 | - } | |
36 | - | |
37 | - if (!task) { | |
38 | - logger.warn('Something wrong, undefined task without error') | |
39 | - return; | |
40 | - } | |
41 | - | |
42 | - logger.verbose('Got relevant task', {task: task, msg: msg}); | |
43 | - var rc = im.getRcFromMessage(msg); | |
44 | - if (rc == '00') { | |
45 | - var sn = im.getSnFromMessage(msg); | |
46 | - if (sn) { | |
47 | - msg = 'SN=' + sn + ';' + msg; | |
48 | - } | |
49 | - } | |
50 | - | |
51 | - if (['00', '55', '68'].indexOf(rc) == -1) { | |
52 | - im.deleteTask(remoteProduct, destination); | |
53 | - } | |
54 | - | |
55 | - if (rc != '68') { | |
56 | - im.cancelResendDelay(task); | |
57 | - } | |
58 | - | |
59 | - callbackReport(task.requestId, rc, msg); | |
60 | - }); | |
61 | -} | |
62 | - | |
63 | -function start(options) { | |
64 | - if (options && options.config) { | |
65 | - config = options.config; | |
66 | - } else { | |
67 | - console.log('Unknown options.config'); | |
68 | - process.exit('1'); | |
69 | - } | |
70 | - | |
71 | - if (options && options.aaa) { | |
72 | - aaa = options.aaa; | |
73 | - } | |
74 | - | |
75 | - if (options && options.aaa && options.aaa.callbackReport) { | |
76 | - callbackReport = options.aaa.callbackReport; | |
77 | - } else { | |
78 | - console.log('Unknown options.aaa.callbackReport') | |
79 | - process.exit(2); | |
80 | - } | |
81 | - | |
82 | - if (options && options.logger) { | |
83 | - logger = options.logger; | |
84 | - } else { | |
85 | - logger = new winston.Logger({ | |
86 | - transports: [ | |
87 | - new (winston.transports.Console)() | |
88 | - ] | |
89 | - }); | |
90 | - } | |
91 | - | |
92 | - var callbacks = { | |
93 | - onLoginSuccessful: onLoginSuccessful, | |
94 | - onPM: onPM, | |
95 | - } | |
96 | - | |
97 | - im.init(options); | |
98 | - imAdaptor.init(config.h2h_out.ym_id, config.h2h_out.ym_password, logger, callbacks); | |
99 | -} | |
100 | - | |
101 | -function onSameDayDupe(task, archivedTask) { | |
102 | - if (task.requestId == archivedTask.requestId) { | |
103 | - logger.info('Mengulang trx untuk advice', {task: task}); | |
104 | - _topupRequest(task); | |
105 | - } else { | |
106 | - logger.info('Terdeteksi trx sama dalam satu hari yang sama', {task: task}); | |
107 | - callbackReport(task.requestId, '55', 'Terdeteksi trx sama dalam satu hari yang sama'); | |
108 | - } | |
109 | -} | |
110 | - | |
111 | -function _topupRequest(task) { | |
112 | - var pattern = config.h2h_out.request_pattern; | |
113 | - | |
114 | - var keywords = { | |
115 | - remoteProduct: task.remoteProduct, | |
116 | - destination: task.destination, | |
117 | - pin: config.h2h_out.pin | |
118 | - } | |
119 | - | |
120 | - im.saveTask(task, function() { | |
121 | - im.registerResendDelay(task); | |
122 | - | |
123 | - var msg = im.createMessage(pattern, keywords); | |
124 | - imAdaptor.sendMessage(config.h2h_out.partner, msg); | |
125 | - }); | |
126 | - | |
127 | -} | |
128 | - | |
129 | -function topupRequest(task) { | |
130 | - if (!aaa.isTodayTrx(task)) { | |
131 | - logger.warn('Maaf, transaksi beda hari tidak dapat dilakukan'); | |
132 | - callbackReport(task.requestId, '68', 'Maaf, transaksi beda hari tidak dapat dilakukan'); | |
133 | - im.cancelResendDelay(task); | |
134 | - return; | |
135 | - } | |
136 | - | |
137 | - im.checkForSameDayDuplicate(task, _topupRequest, onSameDayDupe, _topupRequest); | |
138 | -} | |
139 | - | |
140 | -exports.start = start; | |
141 | -exports.topupRequest = topupRequest; |
sample.config.ini
... | ... | @@ -8,12 +8,12 @@ apikey=123497 |
8 | 8 | redis_host=localhost |
9 | 9 | redis_port=6379 |
10 | 10 | balance_regex=Saldo: Rp (\d+?)\. |
11 | -auto_resend_delay_secs=120 | |
11 | +auto_resend_delay_secs=300 | |
12 | 12 | dump_stats_interval_secs=300 |
13 | 13 | |
14 | 14 | [h2h_out] |
15 | -ym_id=myymid | |
16 | -ym_password=mypassword | |
15 | +im_username=myymid | |
16 | +im_password=mypassword | |
17 | 17 | partner=partnerymid |
18 | 18 | allow_response_from=partnerymid |
19 | 19 | pin=1234 |