/** * 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 }); });; };