@@ -16,12 +16,23 @@ module.exports.handler = async (context, event, callback) => {
1616 ROOM_TYPE ,
1717 } = context ;
1818
19- const { user_identity, room_name, passcode } = event ;
19+ const { user_identity, room_name, passcode, create_room = true } = event ;
2020 const [ , appID , serverlessID ] = DOMAIN_NAME . match ( / - ? ( \d * ) - ( \d + ) (?: - \w + ) ? .t w i l .i o $ / ) ;
2121
2222 let response = new Twilio . Response ( ) ;
2323 response . appendHeader ( 'Content-Type' , 'application/json' ) ;
2424
25+ if ( typeof create_room !== 'boolean' ) {
26+ response . setStatusCode ( 400 ) ;
27+ response . setBody ( {
28+ error : {
29+ message : 'invalid parameter' ,
30+ explanation : 'A boolean value must be provided for the create_room parameter' ,
31+ } ,
32+ } ) ;
33+ return callback ( null , response ) ;
34+ }
35+
2536 if ( Date . now ( ) > API_PASSCODE_EXPIRY ) {
2637 response . setStatusCode ( 401 ) ;
2738 response . setBody ( {
@@ -56,21 +67,23 @@ module.exports.handler = async (context, event, callback) => {
5667 return callback ( null , response ) ;
5768 }
5869
59- const client = context . getTwilioClient ( ) ;
70+ if ( create_room ) {
71+ const client = context . getTwilioClient ( ) ;
6072
61- try {
62- await client . video . rooms . create ( { uniqueName : room_name , type : ROOM_TYPE } ) ;
63- } catch ( e ) {
64- // Ignore 53113 error (room already exists). See: https://www.twilio.com/docs/api/errors/53113
65- if ( e . code !== 53113 ) {
66- response . setStatusCode ( 500 ) ;
67- response . setBody ( {
68- error : {
69- message : 'error creating room' ,
70- explanation : 'Something went wrong when creating a room.' ,
71- } ,
72- } ) ;
73- return callback ( null , response ) ;
73+ try {
74+ await client . video . rooms . create ( { uniqueName : room_name , type : ROOM_TYPE } ) ;
75+ } catch ( e ) {
76+ // Ignore 53113 error (room already exists). See: https://www.twilio.com/docs/api/errors/53113
77+ if ( e . code !== 53113 ) {
78+ response . setStatusCode ( 500 ) ;
79+ response . setBody ( {
80+ error : {
81+ message : 'error creating room' ,
82+ explanation : 'Something went wrong when creating a room.' ,
83+ } ,
84+ } ) ;
85+ return callback ( null , response ) ;
86+ }
7487 }
7588 }
7689
@@ -81,6 +94,6 @@ module.exports.handler = async (context, event, callback) => {
8194 const videoGrant = new VideoGrant ( { room : room_name } ) ;
8295 token . addGrant ( videoGrant ) ;
8396 response . setStatusCode ( 200 ) ;
84- response . setBody ( { token : token . toJwt ( ) , room_type : ROOM_TYPE } ) ;
97+ response . setBody ( { token : token . toJwt ( ) , room_type : create_room ? ROOM_TYPE : null } ) ;
8598 return callback ( null , response ) ;
8699} ;
0 commit comments