integration/app/test-demo/server.js (93 lines of code) (raw):

const compression = require('compression'); const fs = require('fs'); const url = require('url'); const { v4: uuidv4 } = require('uuid'); const AWS = require('aws-sdk'); let hostname = '127.0.0.1'; let port = 8080; let protocol = 'http'; let options = {}; const chime = new AWS.Chime({ region: 'us-east-1' }); const meetingCache = {}; const attendeeCache = {}; const log = message => { console.log(`${new Date().toISOString()} ${message}`); }; const app = 'meeting'; const server = require(protocol).createServer( options, async (request, response) => { log(`${request.method} ${request.url} BEGIN`); compression({})(request, response, () => { }); try { if ( request.method === 'POST' && request.url.startsWith('/join?') ) { const query = url.parse(request.url, true).query; const title = query.title; const name = query.name; const region = query.region || 'us-east-1'; if (!meetingCache[title]) { meetingCache[title] = await chime .createMeeting({ ClientRequestToken: uuidv4(), MediaRegion: region }) .promise(); attendeeCache[title] = {}; } const joinInfo = { JoinInfo: { Title: title, Meeting: meetingCache[title].Meeting, Attendee: ( await chime .createAttendee({ MeetingId: meetingCache[title].Meeting.MeetingId, ExternalUserId: uuidv4() }) .promise() ).Attendee } }; attendeeCache[title][joinInfo.JoinInfo.Attendee.AttendeeId] = name; response.statusCode = 201; response.setHeader('Content-Type', 'application/json'); response.write(JSON.stringify(joinInfo), 'utf8'); response.end(); log(JSON.stringify(joinInfo, null, 2)); } else if ( request.method === 'GET' && request.url.startsWith('/attendee?') ) { const query = url.parse(request.url, true).query; const attendeeInfo = { AttendeeInfo: { AttendeeId: query.attendee, Name: attendeeCache[query.title][query.attendee] } }; response.statusCode = 200; response.setHeader('Content-Type', 'application/json'); response.write(JSON.stringify(attendeeInfo), 'utf8'); response.end(); log(JSON.stringify(attendeeInfo, null, 2)); } else { response.statusCode = 404; response.setHeader('Content-Type', 'text/plain'); response.end('404 Not Found'); } } catch (err) { log(`server caught error: ${err}`); response.statusCode = 403; response.setHeader('Content-Type', 'application/json'); response.write(JSON.stringify({ error: err.message }), 'utf8'); response.end(); } log(`${request.method} ${request.url} END`); } ); server.listen(port, hostname, () => { log(`server running at ${protocol}://${hostname}:${port}/`); });