'use strict'; const path = require('path'); const request = require('request'); const locks = require('locks'); const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); const mutex = locks.createMutex(); function reportUrl() { if (config.report_url.register_modem) { return config.report_url.register_modem; } const baseUrl = path.dirname(config.report_url.incoming_sms); return `${baseUrl}/modems/set`; } function sender(modemInfo) { if (mutex.tryLock()) { const requestOptions = { url: reportUrl(), qs: { modem: config.name, modem_device: config.modem.device, modem_imsi: modemInfo.imsi, // modem_msisdn: modemInfo.msisdn, modem_network_id: modemInfo.networkId, modem_network_name: modemInfo.networkName, modem_signal_strength: modemInfo.signalStrength, uptime: Math.floor(process.uptime()), startTime: modemInfo.startTime, report_port: config.http_command_server.listen_port, report_apikey: config.http_command_server.apikey, report_path_sms: '/sms', lastReadTs: modemInfo.lastReadTs, lastWriteTs: modemInfo.lastWriteTs, }, }; logger.info('Sending modem registration to center'); request(requestOptions, (err, res) => { mutex.unlock(); if (err) { logger.warn(`Error registering modem. ${err.toString()}`); } else if (res.statusCode !== 200) { logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`); } }); } } module.exports = sender;