54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
/**
|
|
* Try to update door status
|
|
*/
|
|
|
|
const redis = require('redis');
|
|
|
|
function doorStatusKey(id) {
|
|
return concatKeys("doors", id, 'open');
|
|
}
|
|
|
|
function concatKeys(...keys) {
|
|
return keys.join(':');
|
|
}
|
|
|
|
exports.handler = function(context, event, callback) {
|
|
const response = new Twilio.Response();
|
|
|
|
let door = event.door;
|
|
|
|
if (!door) {
|
|
response.setStatusCode(400);
|
|
return callback(null, response);
|
|
}
|
|
|
|
let client = new RedisDbClient((err) => console.error(err), { url: context.REDIS_CONNECT_URL });
|
|
client.connect()
|
|
.then(async () => {
|
|
const isOpen = await client.get(doorStatusKey(door));
|
|
|
|
if (isOpen) {
|
|
const fingerprint = JSON.parse(isOpen);
|
|
|
|
response
|
|
.setStatusCode(200)
|
|
.appendHeader('Content-Type', 'application/json')
|
|
.setBody({
|
|
status: "OPEN",
|
|
fingerprint,
|
|
});
|
|
await client.remove(doorStatusKey(req.params.id));
|
|
|
|
return callback(null, response);
|
|
}
|
|
|
|
response
|
|
.setStatusCode(401)
|
|
.appendHeader('Content-Type', 'application/json')
|
|
.setBody({
|
|
status: "CLOSED",
|
|
});
|
|
|
|
return callback(null, response);
|
|
});
|
|
}; |