Commit 725d029e9eb053536cce07b9b055c779540c4955

Authored by Adhidarma Hadiwinoto
1 parent d4f4ee969d
Exists in master

decrement config.globals.requests_count

Showing 1 changed file with 2 additions and 0 deletions Inline Diff

1 var url = require('url'); 1 var url = require('url');
2 var math = require('mathjs'); 2 var math = require('mathjs');
3 var request = require('request'); 3 var request = require('request');
4 var xml = require("xml2js").parseString; 4 var xml = require("xml2js").parseString;
5 5
6 var config; 6 var config;
7 var callbackReport; 7 var callbackReport;
8 8
9 var max_retry = 3; 9 var max_retry = 3;
10 var sleep_before_retry = 3000; 10 var sleep_before_retry = 3000;
11 11
12 process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; 12 process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
13 13
14 function topupRequest(task, retry) { 14 function topupRequest(task, retry) {
15 if (config.globals.requests_count == undefined) { 15 if (config.globals.requests_count == undefined) {
16 config.globals.requests_count = 1; 16 config.globals.requests_count = 1;
17 } else { 17 } else {
18 config.globals.requests_count++; 18 config.globals.requests_count++;
19 } 19 }
20 20
21 if (config.globals.active_requests_count == undefined) { 21 if (config.globals.active_requests_count == undefined) {
22 config.globals.active_requests_count = 1; 22 config.globals.active_requests_count = 1;
23 } else { 23 } else {
24 config.globals.active_requests_count++; 24 config.globals.active_requests_count++;
25 } 25 }
26 26
27 if (config.globals.max_active_requests_count == undefined) { 27 if (config.globals.max_active_requests_count == undefined) {
28 config.globals.max_active_requests_count = config.globals.active_requests_count; 28 config.globals.max_active_requests_count = config.globals.active_requests_count;
29 } else { 29 } else {
30 config.globals.max_active_requests_count = math.max(config.globals.max_active_requests_count, config.globals.active_requests_count); 30 config.globals.max_active_requests_count = math.max(config.globals.max_active_requests_count, config.globals.active_requests_count);
31 } 31 }
32 32
33 33
34 if (retry === undefined) { 34 if (retry === undefined) {
35 retry = max_retry; 35 retry = max_retry;
36 } 36 }
37 37
38 var params = { 38 var params = {
39 userid: config.h2h_out.userid, 39 userid: config.h2h_out.userid,
40 pwd: config.h2h_out.password, 40 pwd: config.h2h_out.password,
41 memberreff: task['requestId'], 41 memberreff: task['requestId'],
42 produk: task['remoteProduct'], 42 produk: task['remoteProduct'],
43 tujuan: task['destination'] 43 tujuan: task['destination']
44 }; 44 };
45 console.log('PARAMS:'); 45 console.log('PARAMS:');
46 console.log(params); 46 console.log(params);
47 47
48 request.post({url: config.h2h_out.partner, form: params}, function(err, httpResponse, httpResponseBody) { 48 request.post({url: config.h2h_out.partner, form: params}, function(err, httpResponse, httpResponseBody) {
49
50 config.globals.requests_count--;
49 51
50 if (err) { 52 if (err) {
51 console.log('HTTP Request Error (' + task['requestId'] + '): '); 53 console.log('HTTP Request Error (' + task['requestId'] + '): ');
52 console.log(error); 54 console.log(error);
53 55
54 if (retry) { 56 if (retry) {
55 57
56 console.log('Retrying trx hit (' + retry + ')'); 58 console.log('Retrying trx hit (' + retry + ')');
57 setTimeout(function() { 59 setTimeout(function() {
58 topupRequest(task, retry - 1); 60 topupRequest(task, retry - 1);
59 }, sleep_before_retry); 61 }, sleep_before_retry);
60 62
61 } else { 63 } else {
62 callbackReport(task['requestId'], '54', 'Gangguan koneksi ke suplier'); 64 callbackReport(task['requestId'], '54', 'Gangguan koneksi ke suplier');
63 } 65 }
64 return; 66 return;
65 } 67 }
66 68
67 console.log('Server Response: '); 69 console.log('Server Response: ');
68 console.log(httpResponseBody); 70 console.log(httpResponseBody);
69 71
70 if (httpResponseBody.indexOf('502 Proxy Error') >= 0) { 72 if (httpResponseBody.indexOf('502 Proxy Error') >= 0) {
71 callbackReport(task['requestId'], '54', '502 Proxy error'); 73 callbackReport(task['requestId'], '54', '502 Proxy error');
72 return; 74 return;
73 } 75 }
74 76
75 xml(httpResponseBody, function(err, result) { 77 xml(httpResponseBody, function(err, result) {
76 if (err) { 78 if (err) {
77 console.log('Gagal parsing XML respon server'); 79 console.log('Gagal parsing XML respon server');
78 topupRequest(task, retry - 1); 80 topupRequest(task, retry - 1);
79 return; 81 return;
80 } 82 }
81 83
82 console.log('Response Data:'); 84 console.log('Response Data:');
83 console.log(result); 85 console.log(result);
84 86
85 var response_code = result.respon.rc[0].replace(/^00/, ''); 87 var response_code = result.respon.rc[0].replace(/^00/, '');
86 88
87 var token = ''; 89 var token = '';
88 if (result.respon.token) { 90 if (result.respon.token) {
89 token = result.respon.token[0]; 91 token = result.respon.token[0];
90 } 92 }
91 93
92 var data_pelanggan = ''; 94 var data_pelanggan = '';
93 if (result.respon.data) { 95 if (result.respon.data) {
94 data_pelanggan = result.respon.data[0].replace(/ /g, '-'); 96 data_pelanggan = result.respon.data[0].replace(/ /g, '-');
95 } 97 }
96 98
97 var message = result.respon.pesan[0].replace(/\n/g, ' '); 99 var message = result.respon.pesan[0].replace(/\n/g, ' ');
98 100
99 if (token && data_pelanggan) { 101 if (token && data_pelanggan) {
100 var sn = token + '/' + data_pelanggan; 102 var sn = token + '/' + data_pelanggan;
101 message = 'SN=' + sn + '; ' + message; 103 message = 'SN=' + sn + '; ' + message;
102 } 104 }
103 105
104 callbackReport(task['requestId'], response_code, message); 106 callbackReport(task['requestId'], response_code, message);
105 107
106 if (response_code == '68') { 108 if (response_code == '68') {
107 setTimeout(function() { 109 setTimeout(function() {
108 topupRequest(task, 5); 110 topupRequest(task, 5);
109 }, 60000); 111 }, 60000);
110 } 112 }
111 113
112 }); 114 });
113 }); 115 });
114 } 116 }
115 117
116 function start(_config, _callbackReport) { 118 function start(_config, _callbackReport) {
117 config = _config; 119 config = _config;
118 callbackReport = _callbackReport 120 callbackReport = _callbackReport
119 } 121 }
120 122
121 function parseSN(message) { 123 function parseSN(message) {
122 var sn_regex = new RegExp(config.h2h_out.sn_pattern); 124 var sn_regex = new RegExp(config.h2h_out.sn_pattern);
123 var sn_match = message.match(sn_regex); 125 var sn_match = message.match(sn_regex);
124 126
125 //console.log('SN MATCH:'); 127 //console.log('SN MATCH:');
126 //console.log(sn_match); 128 //console.log(sn_match);
127 129
128 if (sn_match <= 0) { 130 if (sn_match <= 0) {
129 console.log('SN Not found: ' + message); 131 console.log('SN Not found: ' + message);
130 return ''; 132 return '';
131 } 133 }
132 134
133 var sn = sn_match[0]; 135 var sn = sn_match[0];
134 var sn_remove_patterns = config.h2h_out.sn_remove_patterns.split(config.h2h_out.sn_remove_patterns_separator); 136 var sn_remove_patterns = config.h2h_out.sn_remove_patterns.split(config.h2h_out.sn_remove_patterns_separator);
135 //console.log('SN REMOVE PATTERNS:'); 137 //console.log('SN REMOVE PATTERNS:');
136 //console.log (sn_remove_patterns); 138 //console.log (sn_remove_patterns);
137 139
138 var count = sn_remove_patterns.length; 140 var count = sn_remove_patterns.length;
139 141
140 for(var i = 0; i < count; i++) { 142 for(var i = 0; i < count; i++) {
141 sn = sn.replace(sn_remove_patterns[i], ''); 143 sn = sn.replace(sn_remove_patterns[i], '');
142 } 144 }
143 145
144 return sn.trim(); 146 return sn.trim();
145 } 147 }
146 148
147 function parseResult(message) { 149 function parseResult(message) {
148 var data; 150 var data;
149 xml(message, function(err, result) { 151 xml(message, function(err, result) {
150 data = result; 152 data = result;
151 }); 153 });
152 return data; 154 return data;
153 } 155 }
154 156
155 exports.start = start; 157 exports.start = start;
156 exports.topupRequest = topupRequest; 158 exports.topupRequest = topupRequest;
157 exports.parseResult = parseResult; 159 exports.parseResult = parseResult;
158 160