Blame view
lib/modems2.js
2.28 KB
f43dbc16a
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
'use strict'; const modemList = { by_name: {}, by_imsi: {}, by_msisdn: {}, }; /** * Objek data sebuah modem. * * @typedef {Object} ModemData * @property {string} name - nama modem * @property {string} imsi - IMSI modem * @property {string} msisdn - MSISDN modem |
527c38f99
|
16 17 |
* @property {number} uptime - modem uptime in seconds * @property {string} device - modem device path |
f43dbc16a
|
18 19 20 |
* @property {string} reportIp - IP modem * @property {number} reportPort - TCP port modem * @property {string} reportApikey - APIKEY modem |
b6d23624a
|
21 |
* @property {string} reportPathSms - url path untuk pengiriman SMS |
f43dbc16a
|
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
*/ /** * Update data sebuah modem berdasarkan nama modem. * * @param {ModemData} val - objek data modem */ function touchByName(val) { if (!val || !val.name) return; if (typeof val.name !== 'string') return; if (!val.name.trim()) return; modemList.by_name[val.name] = val; } /** * Update data sebuah modem berdasarkan IMSI. * * @param {ModemData} val - objek data modem */ function touchByIMSI(val) { if (!val || !val.imsi) return; if (typeof val.imsi !== 'string') return; if (!val.imsi.trim()) return; modemList.by_imsi[val.imsi] = val; } /** * Update data sebuah modem berdasarkan MSISDN. * * @param {ModemData} val - objek data modem */ function touchByMSISDN(val) { if (!val || !val.msisdn) return; if (typeof val.msisdn !== 'string') return; if (!val.msisdn.trim()) return; modemList.by_msisdn[val.msisdn] = val; } /** * Update data sebuah modem. * * @param {ModemData} val - objek data modem * @see ModemData */ function touch(val) { |
527c38f99
|
69 70 71 |
if (!val || typeof val !== 'object') return; val._ts = new Date(); |
f43dbc16a
|
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
if (!val.reportIp) { val.reportIp = '127.0.0.1'; } touchByName(val); touchByIMSI(val); touchByMSISDN(val); } /** * Ambil data sebuah modem. * * @param {string} selector - selector pencarian, valid jika bernilai salah satu dari: name, imsi, msisdn * @param {string} keyword - kata kunci modem yang ingin diambil * @returns {ModemData} data modem terkait */ function get(selector, keyword) { if (!selector || !keyword) return null; return modemList[`by_${selector}`] ? modemList[`by_${selector}`][keyword] : null; } exports.touch = touch; exports.set = touch; exports.get = get; |