Commit 45725db9065bdce6f2cf520530bfb9e2b32e7bac

Authored by Adhidarma Hadiwinoto
1 parent 205f271b3d
Exists in master

using sate24/partner-im

Showing 4 changed files with 11 additions and 150 deletions Side-by-side Diff

... ... @@ -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);
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;
... ... @@ -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