UNPKG

node-red-contrib-motechat

Version:

ultranet topic and payload communication

106 lines (86 loc) 2.75 kB
const level = require('level') const path = require('path') const os = require('os') const fs = require('fs-extra') const { userDir = '', u = '' } = require('yargs').argv const customPath = userDir || u const home = (() => { if (process.env.SNAP_USER_DATA) return process.env.SNAP_USER_DATA; if (process.platform === 'win32') return process.env.HOMEPATH if (process.platform === 'linux' || process.platform === 'darwin') return process.env.HOME })() const dbPath = customPath ? path.join(customPath, '.node-red-contrib-motechat') : path.join(home, '.node-red', '.node-red-contrib-motechat') fs.ensureDirSync(dbPath) const db = level(dbPath, { valueEncoding: 'json' }) const getDDN = () => new Promise(resolve => { db.get('DDN', (err, value) => resolve(value)) }) const getMote = () => new Promise(resolve => { db.get('mote', (err, value) => resolve(value)) }) const getDSIM = () => new Promise(resolve => { db.get('dSIM', (err, value) => resolve(value)) }) const getConfig = () => new Promise(resolve => { db.get('config', (err, value) => resolve(value)) }) const setDDN = (DDN = "") => new Promise(resolve => { db.put('DDN', { DDN }, (err = 0) => { if (err) resolve(1) resolve(0) }) }) const setMote = (mote = { EiOwner: process.env.EI_OWNER || "", EiName: process.env.MCHAT_EINAME || os.hostname(), EiType: process.env.EI_TYPE || ".flow", EiTag: process.env.EI_TAG || "", EiLoc: process.env.EI_LOC || "" }) => new Promise(resolve => { db.put('mote', mote, (err = 0) => { if (err) resolve(1) resolve(0) }) }) const setDSIM = (dSIM = { SToken: "", EiToken: "" }) => new Promise(resolve => { db.put('dSIM', dSIM, (err = 0) => { if (err) resolve(1) resolve(0) }) }) const setConfig = (config = { AppName: process.env.MCHAT_APPNAME || os.hostname(), AppKey: process.env.APP_KEY || "1u6WauSf", DCenter: process.env.MCHAT_DC || "dc", IOC: process.env.MCHAT_IOC || "", MotebusGW: process.env.MCHAT_MBGWIP || "127.0.0.1", MotebusPort: process.env.MCHAT_MBGWPORT || "6262", WatchLevel: process.env.WATCHLEVEL || "0" }) => new Promise(resolve => { db.put('config', config, (err = 0) => { if (err) resolve(1) resolve(0) }) }) const init = async () => { let DDN = await getDDN() if (!DDN) setDDN() await setMote() let dSIM = await getDSIM() if (!dSIM) setDSIM() await setConfig() return { ...(await getDDN()), mote: await getMote(), dSIM: await getDSIM(), config: await getConfig() } } module.exports = { init, getDDN, getMote, getDSIM, getConfig, setDDN, setMote, setDSIM, setConfig }