Martin Dimitrov 9ddb91472d
Some checks failed
Build and push image for doorman / docker (push) Failing after 22s
add catch for redis client fail
2024-05-04 20:58:24 -07:00

61 lines
1.3 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 = redis.createClient({ 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.getDel(doorStatusKey(door));
await client.quit();
return callback(null, response);
}
response
.setStatusCode(401)
.appendHeader('Content-Type', 'application/json')
.setBody({
status: "CLOSED",
});
return callback(null, response);
}).catch((e) => {
console.log(e);
response
.setStatusCode(500)
.appendHeader('Content-Type', 'application/json')
.setBody({ err: e });
});;
};