UNPKG

smartthings-phone-presence-sensor

Version:
99 lines (92 loc) 2.67 kB
const { sendData, sendDataWithResponse } = require('./restCalls'); const { config } = require('./env'); const apiGateWay = (shard) => `${shard}/api/smartapps/installations/`; const apiGateWayStatus = () => '/Phone/status?access_token='; const apiSmartAppInfo = () => '/smartapp/info?access_token='; const apiGateWayWIFI = () => '/WIFI/guests?access_token='; const apiGateWayInitUrl = () => '/Router/init?access_token='; function getSmartAppInfo(shard, appId, secret) { return new Promise((resolve, reject) => { const url = `${apiGateWay(shard)}${appId}${apiSmartAppInfo()}${secret}`; sendDataWithResponse( url, 'GET', ).then((res) => { resolve(JSON.parse(res.body)); }).catch((response) => { reject(response); }); }); } function sendPromise(body, shard, appId, secret) { return new Promise((resolve, reject) => { const url = `${apiGateWay(shard)}${appId}${apiGateWayStatus()}${secret}`; sendData( url, 'POST', JSON.stringify(body), { 'Content-Type': 'application/json', }, ).then((res) => { resolve(res); }).catch((response) => { reject(response); }); }); } function sendStatus(body) { return new Promise((resolve, reject) => { const { smartthings } = config(); const promises = []; Object.keys(smartthings).forEach((name) => { if (name) { const user = smartthings[name]; promises.push(sendPromise(body, user.shard, user.appId, user.secret)); } }); Promise.all(promises).then((res) => { resolve(res); }).catch((response) => { reject(response); }); }); } function sendWIFI(body) { return new Promise((resolve, reject) => { sendData( `${apiGateWay()}${config().smartapp.appId}${apiGateWayWIFI()}${config().smartapp.accessToken}`, 'POST', JSON.stringify(body), { 'Content-Type': 'application/json', }, ).then((res) => { resolve(res); }).catch((response) => { reject(response); }); }); } function apiGateWayInit(body, userName, appId, secret, shard) { return new Promise((resolve, reject) => { const url = `${apiGateWay(shard)}${appId}${apiGateWayInitUrl()}${secret}`; sendDataWithResponse( url, 'POST', JSON.stringify(body), { 'Content-Type': 'application/json', }, userName, ).then((res) => { resolve(res); }).catch((res) => { reject(res); }); }); } module.exports.sendStatus = sendStatus; module.exports.sendWIFI = sendWIFI; module.exports.apiGateWayInit = apiGateWayInit; module.exports.getSmartAppInfo = getSmartAppInfo;