Commit 15d7af2f4ede2b5c101bc617ebc8bca75c3a35cb

Authored by Adhidarma Hadiwinoto
1 parent f1f98cf8d0
Exists in master

typo error -> err

Showing 1 changed file with 1 additions and 1 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 49
50 if (error) { 50 if (err) {
51 console.log('HTTP Request Error (' + task['requestId'] + '): '); 51 console.log('HTTP Request Error (' + task['requestId'] + '): ');
52 console.log(error); 52 console.log(error);
53 53
54 if (retry) { 54 if (retry) {
55 55
56 console.log('Retrying trx hit (' + retry + ')'); 56 console.log('Retrying trx hit (' + retry + ')');
57 setTimeout(function() { 57 setTimeout(function() {
58 topupRequest(task, retry - 1); 58 topupRequest(task, retry - 1);
59 }, sleep_before_retry); 59 }, sleep_before_retry);
60 60
61 } else { 61 } else {
62 callbackReport(task['requestId'], '54', 'Gangguan koneksi ke suplier'); 62 callbackReport(task['requestId'], '54', 'Gangguan koneksi ke suplier');
63 } 63 }
64 return; 64 return;
65 } 65 }
66 66
67 console.log('Server Response: '); 67 console.log('Server Response: ');
68 console.log(httpResponseBody); 68 console.log(httpResponseBody);
69 69
70 xml(httpResponseBody, function(err, result) { 70 xml(httpResponseBody, function(err, result) {
71 if (err) { 71 if (err) {
72 console.log('Gagal parsing XML respon server'); 72 console.log('Gagal parsing XML respon server');
73 topupRequest(task, retry - 1); 73 topupRequest(task, retry - 1);
74 return; 74 return;
75 } 75 }
76 76
77 var response_code = result.respon.rc.replace(/^00/, ''); 77 var response_code = result.respon.rc.replace(/^00/, '');
78 var token = result.respon.token; 78 var token = result.respon.token;
79 var data = result.respon.data.replace(/ /g, '-'); 79 var data = result.respon.data.replace(/ /g, '-');
80 var sn = token + '/' + data; 80 var sn = token + '/' + data;
81 81
82 var message = result.respon.pesan.replace(/\n/g, ' '); 82 var message = result.respon.pesan.replace(/\n/g, ' ');
83 message = 'SN=' + sn + '; ' + message; 83 message = 'SN=' + sn + '; ' + message;
84 84
85 callbackReport(task['requestId'], response_code, message); 85 callbackReport(task['requestId'], response_code, message);
86 86
87 if (response_code == '68') { 87 if (response_code == '68') {
88 setTimeout(function() { 88 setTimeout(function() {
89 topupRequest(task, 5); 89 topupRequest(task, 5);
90 }, 60000); 90 }, 60000);
91 } 91 }
92 92
93 }); 93 });
94 }); 94 });
95 } 95 }
96 96
97 function start(_config, _callbackReport) { 97 function start(_config, _callbackReport) {
98 config = _config; 98 config = _config;
99 callbackReport = _callbackReport 99 callbackReport = _callbackReport
100 } 100 }
101 101
102 function parseSN(message) { 102 function parseSN(message) {
103 var sn_regex = new RegExp(config.h2h_out.sn_pattern); 103 var sn_regex = new RegExp(config.h2h_out.sn_pattern);
104 var sn_match = message.match(sn_regex); 104 var sn_match = message.match(sn_regex);
105 105
106 //console.log('SN MATCH:'); 106 //console.log('SN MATCH:');
107 //console.log(sn_match); 107 //console.log(sn_match);
108 108
109 if (sn_match <= 0) { 109 if (sn_match <= 0) {
110 console.log('SN Not found: ' + message); 110 console.log('SN Not found: ' + message);
111 return ''; 111 return '';
112 } 112 }
113 113
114 var sn = sn_match[0]; 114 var sn = sn_match[0];
115 var sn_remove_patterns = config.h2h_out.sn_remove_patterns.split(config.h2h_out.sn_remove_patterns_separator); 115 var sn_remove_patterns = config.h2h_out.sn_remove_patterns.split(config.h2h_out.sn_remove_patterns_separator);
116 //console.log('SN REMOVE PATTERNS:'); 116 //console.log('SN REMOVE PATTERNS:');
117 //console.log (sn_remove_patterns); 117 //console.log (sn_remove_patterns);
118 118
119 var count = sn_remove_patterns.length; 119 var count = sn_remove_patterns.length;
120 120
121 for(var i = 0; i < count; i++) { 121 for(var i = 0; i < count; i++) {
122 sn = sn.replace(sn_remove_patterns[i], ''); 122 sn = sn.replace(sn_remove_patterns[i], '');
123 } 123 }
124 124
125 return sn.trim(); 125 return sn.trim();
126 } 126 }
127 127
128 function parseResult(message) { 128 function parseResult(message) {
129 var data; 129 var data;
130 xml(message, function(err, result) { 130 xml(message, function(err, result) {
131 data = result; 131 data = result;
132 }); 132 });
133 return data; 133 return data;
134 } 134 }
135 135
136 exports.start = start; 136 exports.start = start;
137 exports.topupRequest = topupRequest; 137 exports.topupRequest = topupRequest;
138 exports.parseResult = parseResult; 138 exports.parseResult = parseResult;
139 139