From 8295b94e7442b1c6ae98bfb9331504d62125b005 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Mon, 19 Aug 2019 13:36:54 +0700
Subject: [PATCH] CORE prefixes

---
 index.js              |  3 ++-
 lib/prefixes/index.js | 23 +++++++++++++++++++++++
 package-lock.json     |  8 ++++----
 test/prefixes.js      | 23 +++++++++++++++++++++++
 4 files changed, 52 insertions(+), 5 deletions(-)
 create mode 100644 lib/prefixes/index.js
 create mode 100644 test/prefixes.js

diff --git a/index.js b/index.js
index c1383d2..a23868f 100644
--- a/index.js
+++ b/index.js
@@ -10,5 +10,6 @@ const config = require('komodo-sdk/config');
 global.KOMODO_LOG_LABEL = `KOMODO-CENTER@${(config && typeof config.name === 'string') ? config.name.toUpperCase() : 'SMS'}`;
 process.title = global.KOMODO_LOG_LABEL;
 
+require('./lib/prefixes');
 require('./lib/transport');
-require('./lib/apiserver');
\ No newline at end of file
+require('./lib/apiserver');
diff --git a/lib/prefixes/index.js b/lib/prefixes/index.js
new file mode 100644
index 0000000..ceac772
--- /dev/null
+++ b/lib/prefixes/index.js
@@ -0,0 +1,23 @@
+'use strict';
+
+const coreapi = require('komodo-sdk/coreapi');
+
+async function lookup(number) {
+    if (!number) return;
+
+    const [err, lookupResult] = await coreapi({
+        path: '/prefixes/lookup',
+        method: 'GET',
+        qs: {
+            number,
+        }
+    });
+
+    if (err || !lookupResult || lookupResult.error) {
+        return;
+    }
+
+    return lookupResult.prefix;
+}
+
+exports.lookup = lookup;
diff --git a/package-lock.json b/package-lock.json
index 493bc33..974ae3b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2043,9 +2043,9 @@
       "dev": true
     },
     "graceful-fs": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz",
-      "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==",
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+      "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
       "optional": true
     },
     "growl": {
@@ -2557,7 +2557,7 @@
       }
     },
     "komodo-sdk": {
-      "version": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git#b9d4c0ca232d01b41a438b21a0b81e2448bd21bd",
+      "version": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git#277d0d5904a82a2d9d5f0d2dfde4816e7d416ae8",
       "from": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git",
       "requires": {
         "array-unique": "^0.3.2",
diff --git a/test/prefixes.js b/test/prefixes.js
new file mode 100644
index 0000000..a112773
--- /dev/null
+++ b/test/prefixes.js
@@ -0,0 +1,23 @@
+'use strict';
+
+/* global describe it */
+
+global.KOMODO_SDK_NO_LOG_ON_COREAPI = true;
+
+const should = require('should');
+const prefixes = require('../lib/prefixes');
+
+describe('#prefixes', () => {
+    describe('#lookup', () => {
+        it('should return correct prefix', async () => {
+            const lookupResult = await prefixes.lookup('08180000000');
+            lookupResult.should.equal('XL');
+        });
+
+        it('should handle unknown prefix', async () => {
+            should.not.exist(await prefixes.lookup());
+            should.not.exist(await prefixes.lookup(''));
+            should.not.exist(await prefixes.lookup('9'));
+        });
+    });
+});
\ No newline at end of file
-- 
1.9.0