Commit 87210e8c081de6d67e724670651e25054ce777a6

Authored by Adhidarma Hadiwinoto
1 parent cc57ad0a78
Exists in master

jangan hapus msisdn_suffix di evo send message

Showing 1 changed file with 3 additions and 3 deletions Inline Diff

1 var strftime = require('strftime'); 1 var strftime = require('strftime');
2 var request = require('request'); 2 var request = require('request');
3 var xmlparser = require('xml2js').parseString; 3 var xmlparser = require('xml2js').parseString;
4 var http = require('http'); 4 var http = require('http');
5 var url = require('url'); 5 var url = require('url');
6 6
7 var config; 7 var config;
8 var logger; 8 var logger;
9 var sendMessage; 9 var sendMessage;
10 10
11 function start(options) { 11 function start(options) {
12 try { 12 try {
13 sendMessage = options.sendMessage; 13 sendMessage = options.sendMessage;
14 } 14 }
15 catch(e) { 15 catch(e) {
16 console.log('undefined send message. Exiting'); 16 console.log('undefined send message. Exiting');
17 process.exit(2); 17 process.exit(2);
18 } 18 }
19 19
20 if (options && options.config) { 20 if (options && options.config) {
21 config = options.config; 21 config = options.config;
22 } 22 }
23 23
24 if (options && options.logger) { 24 if (options && options.logger) {
25 logger = options.logger; 25 logger = options.logger;
26 } 26 }
27 27
28 28
29 29
30 createHttpServer(); 30 createHttpServer();
31 } 31 }
32 32
33 function formatTimestamp(ms) { 33 function formatTimestamp(ms) {
34 return strftime('%F %T', new Date(ms)); 34 return strftime('%F %T', new Date(ms));
35 } 35 }
36 36
37 function onMessage(sender, message, ts) { 37 function onMessage(sender, message, ts) {
38 var opts = { 38 var opts = {
39 url: config.evo_url, 39 url: config.evo_url,
40 qs: { 40 qs: {
41 msg: message, 41 msg: message,
42 msisdn: sender, 42 msisdn: sender,
43 smsc: config.smsc, 43 smsc: config.smsc,
44 ts: formatTimestamp(ts) 44 ts: formatTimestamp(ts)
45 } 45 }
46 }; 46 };
47 47
48 logger.verbose("Forwarding message to evo", {request_opts: opts}); 48 logger.verbose("Forwarding message to evo", {request_opts: opts});
49 request(opts, function(err, response, body) { 49 request(opts, function(err, response, body) {
50 if (err) { 50 if (err) {
51 logger.warn('Error forwarding to evo: ' + err); 51 logger.warn('Error forwarding to evo: ' + err);
52 return; 52 return;
53 } 53 }
54 54
55 if (response.statusCode != 200) { 55 if (response.statusCode != 200) {
56 logger.warn('HTTP Status from evo: ' + response.statusCode, {status: response.statusCode, body: body}); 56 logger.warn('HTTP Status from evo: ' + response.statusCode, {status: response.statusCode, body: body});
57 return; 57 return;
58 } 58 }
59 59
60 logger.verbose('Got response from evo', {body: body}); 60 logger.verbose('Got response from evo', {body: body});
61 61
62 xmlparser(body, function(xmlerr, parsedResponse) { 62 xmlparser(body, function(xmlerr, parsedResponse) {
63 if (xmlerr) { 63 if (xmlerr) {
64 logger.verbose('Evo response not in xml format'); 64 logger.verbose('Evo response not in xml format');
65 return; 65 return;
66 } 66 }
67 67
68 return; 68 return;
69 69
70 logger.info('Evo response in xml format', {response: parsedResponse}); 70 logger.info('Evo response in xml format', {response: parsedResponse});
71 if (parsedResponse.response.text) { 71 if (parsedResponse.response.text) {
72 sendMessage(sender, parsedResponse.response.text[0].trim()); 72 sendMessage(sender, parsedResponse.response.text[0].trim());
73 } 73 }
74 }); 74 });
75 }); 75 });
76 } 76 }
77 77
78 function onHttpIncomingMessage(request, response) { 78 function onHttpIncomingMessage(request, response) {
79 var qs = url.parse(request.url, true).query; 79 var qs = url.parse(request.url, true).query;
80 logger.verbose("onHttpIncomingMessage()", {qs: qs}); 80 logger.verbose("onHttpIncomingMessage()", {qs: qs});
81 81
82 var destination = qs.to.replace(config.msisdn_suffix, ''); 82 //var destination = qs.to.replace(config.msisdn_suffix, '');
83 logger.info('Sending message to ' + destination + ': ' + qs.msg); 83 logger.info('Sending message to ' + qs.to + ': ' + qs.msg);
84 sendMessage(destination, qs.msg); 84 sendMessage(qs.to, qs.msg);
85 response.end('OK'); 85 response.end('OK');
86 } 86 }
87 87
88 function createHttpServer() { 88 function createHttpServer() {
89 logger.verbose('createHttpServer()'); 89 logger.verbose('createHttpServer()');
90 90
91 var httpServer = http.createServer(onHttpIncomingMessage); 91 var httpServer = http.createServer(onHttpIncomingMessage);
92 httpServer.listen(config.listen_port, function(){ 92 httpServer.listen(config.listen_port, function(){
93 logger.info("HTTP server listening on " + config.listen_port); 93 logger.info("HTTP server listening on " + config.listen_port);
94 }); 94 });
95 } 95 }
96 96
97 exports.start = start; 97 exports.start = start;
98 exports.formatTimestamp = formatTimestamp; 98 exports.formatTimestamp = formatTimestamp;
99 exports.onMessage = onMessage; 99 exports.onMessage = onMessage;
100 100