'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 counters = require('./counters'); 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`; } async function sender(modemInfo) { if (mutex.tryLock()) { // logger.info('Getting message counters before registering modem'); // eslint-disable-next-line no-param-reassign // modemInfo.messageSentCounter = await counters.get('MESSAGE_SENT', modemInfo); // eslint-disable-next-line no-param-reassign // modemInfo.messageReceivedCounter = await counters.get('MESSAGE_RECEIVED', modemInfo); 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()), report_port: config.http_command_server.listen_port, report_apikey: config.http_command_server.apikey, report_path_sms: '/sms', // counter_sent: modemInfo.messageSentCounter, // counter_received: modemInfo.messageReceivedCounter, }, }; 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;