Martin Dimitrov b0492e7d58
All checks were successful
Build and push image for doorman-homeassistant / docker (push) Successful in 25s
Build and push Doorman UI / API / docker (push) Successful in 1m23s
Build and push image for doorman-homeassistant / deploy-gitainer (push) Successful in 22s
make a simple blocklist for discord + bots
2024-11-12 22:28:35 -08:00

65 lines
1.5 KiB
JavaScript

/**
* Try to update door status
*/
exports.handler = async function(context, event, callback) {
const response = new Twilio.Response();
const blockPath = Runtime.getFunctions()['common/blockUserAgent'].path;
const block = require(blockPath);
if (block.shouldBlockRequest(event)) {
response.setStatusCode(200);
return callback(null, response);
}
const door = event.door;
if (!door) {
response.setStatusCode(400);
return callback(null, response);
}
const ddbPath = Runtime.getFunctions()['common/ddb'].path;
const ddb = require(ddbPath);
const client = ddb.createDDBClient(context);
await client.send(ddb.getLockStatusCommand(door))
.then(async (lock) => {
const isOpen = ddb.isLockOpen(lock);
if (isOpen) {
const fingerprint = JSON.parse(lock.Item.fingerprint.S);
response
.setStatusCode(200)
.appendHeader('Content-Type', 'application/json')
.setBody({
status: "OPEN",
fingerprint,
});
await client.send(ddb.clearLockStatusCommand(lock));
return;
}
response
.setStatusCode(200)
.appendHeader('Content-Type', 'application/json')
.setBody({
status: "CLOSED",
});
}).catch((e) => {
console.log(e);
response
.setStatusCode(500)
.appendHeader('Content-Type', 'application/json')
.setBody({ err: e });
});
await client.destroy();
return callback(null, response);
};