/** * Try to get door info */ 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 || context.DEFAULT_DOOR; if (!door) { response.setStatusCode(400); return callback(null, response); } door = door.toUpperCase(); const timeout = context['OPEN_TIMEOUT_' + door] || 60; res.status(200).json(); let client = new RedisDbClient((err) => console.error(err), { url: context.REDIS_CONNECT_URL }); client.connect() .then(async () => { const status = await client.get(doorStatusKey(door)) ? "OPEN": "CLOSED"; response .setStatusCode(200) .appendHeader('Content-Type', 'application/json') .setBody({ id: doorId, timeout, status }); return callback(null, response); }); };