From e448936d34b140aa2658c77d2daa27566edd2ce2 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Wed, 7 Aug 2019 22:14:46 +0700
Subject: [PATCH] Penggunaan parameter partner menggantikan from dan to

---
 lib/http-listener.js | 37 ++++++++++++++++++++++++++++++-------
 1 file changed, 30 insertions(+), 7 deletions(-)

diff --git a/lib/http-listener.js b/lib/http-listener.js
index f56d16c..cf41adb 100644
--- a/lib/http-listener.js
+++ b/lib/http-listener.js
@@ -13,12 +13,35 @@ const messagesArchive = require('./messages-archive');
 const app = express();
 const port = config && config.listener && config.listener.http && config.listener.http.port ? config.listener.http.port : 32979;
 
+/**
+ * Handler utama.
+ *
+ * @param  {object} req - Express request object
+ * @param  {object} req.query - Express query string object
+ * @param  {string} [req.query.partner] - Partner (pengirim atau penerima)
+ * @param  {string} [req.query.from] - Pengirim, OBSOLETED: gunakan parameter partner
+ * @param  {string} [req.query.from_raw] - Pengirim tanpa suffix (raw), OBSOLETED: gunakan parameter partner_raw
+ * @param  {string} [req.query.to] - Tujuan, jika is_outgoing, OBSOLETED: gunakan parameter partner
+ * @param  {string} req.query.msg - Isi pesan
+ * @param  {string} req.query.origin - Nama origin
+ * @param  {string} [req.query.origin_label] - Nama origin untuk ditulis di histori pesan
+ * @param  {string} [req.query.do_not_forward_to_core] - Apakah teruskan pesan ke CORE
+ * @param  {string} [req.query.is_outgoing] - Apakah pesan keluar
+ * @param  {object} res - Express response object
+ */
 function mainHandler(req, res) {
-
     if (!req.body) req.body = {};
 
-    if (!req.query.from && !req.body.from) {
-        res.end('ERROR. Undefined parameter: from');
+    if (
+        ( !req.body.partner || !req.query.partner )
+        &&
+        (
+            ( (!req.query.is_outgoing && !req.body.is_outgoing) && (!req.query.from && !req.body.from) )
+            || 
+            ( (req.query.is_outgoing || req.body.is_outgoing) && (!req.query.to && !req.body.to) )
+        )
+    ) {
+        res.end('ERROR. Undefined parameter: partner or from or to');
         return;
     }
 
@@ -31,13 +54,13 @@ function mainHandler(req, res) {
         {
             origin_label: req.body.origin_label || req.query.origin_label || req.body.origin || req.query.origin,
             origin_transport: req.body.origin_transport || req.query.origin_transport,
-            partner: req.body.from_raw || req.query.from_raw || req.body.from || req.query.from,
+            partner: req.body.partner_raw || req.query.partner_raw || req.body.from_raw || req.query.from_raw || req.body.from || req.query.from || req.body.to || req.query.to || req.body.partner || req.query.partner,
             msg: req.body.msg || req.query.msg,
         }, 
-        messagesArchive.DIRECTION_INCOMING
+        ( req.body.is_outgoing || req.query.is_outgoing ) ? messagesArchive.DIRECTION_OUTGOING : messagesArchive.DIRECTION_INCOMING
     );
 
-    if (req.body.do_not_forward_to_core || req.query.do_not_forward_to_core) {
+    if (req.body.do_not_forward_to_core || req.query.do_not_forward_to_core || req.body.is_outgoing || req.query.is_outgoing) {
         logger.verbose('Ignoring message', { from: req.body.from || req.query.from, msg: req.body.msg || req.query.msg, do_not_forward_to_core: req.body.do_not_forward_to_core || req.query.do_not_forward_to_core });
         res.end('OK');
         return;
@@ -52,7 +75,7 @@ function mainHandler(req, res) {
         origin: req.body.origin || req.query.origin || 'MESSAGING',
         report_ip: req.body.report_ip || req.query.report_ip || req.ip,
         report_port: req.body.report_port || req.query.report_port,
-        from: req.body.from || req.query.from,
+        from: req.body.partner || req.query.partner || req.body.from || req.query.from,
         msg: req.body.msg || req.query.msg
     }
 
-- 
1.9.0