Commit 1d120a911060e042f9671582a46eced56b4d8446

Authored by Adhidarma Hadiwinoto
1 parent 788e8154b3
Exists in master

SMSTOOLS-CONFIG set single value

Showing 2 changed files with 61 additions and 0 deletions Side-by-side Diff

lib/apiserver/routers/smstools-config.js
... ... @@ -82,6 +82,42 @@ async function pageModemSet(req, res) {
82 82 });
83 83 }
84 84  
  85 +async function pageModemSetSingleValue(req, res) {
  86 + if (!req.body) {
  87 + res.json({
  88 + status: 'NOT OK',
  89 + message: 'Empty body',
  90 + });
  91 + return;
  92 + }
  93 +
  94 + const modemName = (req.params.modemName || '').trim();
  95 + if (!modemName) {
  96 + res.json({
  97 + status: 'NOT OK',
  98 + message: 'Invalid modem name',
  99 + });
  100 + return;
  101 + }
  102 +
  103 + const keyword = (req.body.keyword || '').trim();
  104 + if (!keyword) {
  105 + res.json({
  106 + status: 'NOT OK',
  107 + message: 'Invalid keyword',
  108 + });
  109 + return;
  110 + }
  111 +
  112 + const { value } = req.body;
  113 +
  114 + const result = await smstoolsConfigSetter.setModemSingleValue(modemName, keyword, value);
  115 + res.json({
  116 + dirty: !!smstoolsConfigData.dirty,
  117 + result,
  118 + });
  119 +}
  120 +
85 121 async function pageModemDelete(req, res) {
86 122 const modemName = (req.params.modemName || '').trim();
87 123 if (!modemName) {
... ... @@ -116,5 +152,6 @@ router.get('/modems', pageModemList);
116 152  
117 153 router.get('/set/:keyword', pageSet);
118 154 router.post('/modem/set/:modemName', bodyParser.json({ type: '*/json' }), pageModemSet);
  155 +router.post('/modem/set-single-value/:modemName', bodyParser({ type: '*/json' }), pageModemSetSingleValue);
119 156 router.get('/modem/delete/:modemName', pageModemDelete);
120 157 router.get('/install-config', pageInstallConfig);
lib/smstools-config/setter.js
... ... @@ -73,6 +73,30 @@ exports.setModem = async (modemName, data) => {
73 73 return smstoolsConfigData;
74 74 };
75 75  
  76 +exports.setModemSingleValue = async (modemName, keyword, value) => {
  77 + if (!modemName) return smstoolsConfigData;
  78 +
  79 + if (keyword === 'device') {
  80 + const modemWithSameDevice = getModemByDevice(value);
  81 + if (modemWithSameDevice && modemWithSameDevice !== modemName) {
  82 + return smstoolsConfigData;
  83 + }
  84 + }
  85 +
  86 + if (!smstoolsConfigData.modems) {
  87 + smstoolsConfigData.modems = {};
  88 + }
  89 +
  90 + if (!smstoolsConfigData.modems[modemName]) {
  91 + smstoolsConfigData.modems[modemName] = {};
  92 + }
  93 +
  94 + smstoolsConfigData.modems[modemName][keyword] = value;
  95 + smstoolsConfigData.dirty = true;
  96 + await writeConfig();
  97 + return smstoolsConfigData;
  98 +};
  99 +
76 100  
77 101 exports.delModem = async (modemName) => {
78 102 if (!modemName) return smstoolsConfigData;