aladdin-connect
Version:
Client module for opening + closing garage doors via the Genie Aladdin Connect
58 lines (53 loc) • 1.41 kB
JavaScript
const session = require('./util/session')
const statuses = require('./util/door-status')
const tiny = require('tiny-json-http')
/**
* Status
* - Get status for a garage door
* - If a door isn't specified, gets status for the first lock returned by the API
*/
module.exports = function status(params, callback) {
if (!callback && typeof params === 'function') {
callback = params
params = undefined
}
params = params || {}
let {deviceNumber=0, doorNumber=1} = params
let promise
if (!callback) {
promise = new Promise((res, rej) => {
callback = (err, result) => {
err ? rej(err) : res(result)
}
})
}
session({deviceNumber, doorNumber}, function _status(err, result) {
if (err) callback(err)
else {
let {headers, body} = result
let url = 'https://genie.m2.exosite.com/onep:v1/rpc/process'
body.calls = [
{
arguments: [
{ alias: `dps${doorNumber}.door_status` }, {}
],
id: 1,
procedure: 'read'
},
]
tiny.post({
url,
headers,
data: body
}, function done(err, response) {
if (err) callback(err)
else {
let statusCode = response.body[0].result[0][1] // lol
let status = statuses(statusCode)
callback(null, {status, statusCode})
}
})
}
})
return promise
}