From 7a4a78cbfc551ca6524c50693cbade57346fdfe5 Mon Sep 17 00:00:00 2001 From: csantosm <4a.santos@gmail.com> Date: Wed, 17 Aug 2022 12:54:18 +0200 Subject: [PATCH] openvidu-call: Improved backend responses --- .../java/controllers/AdminController.java | 19 +++++-- .../java/controllers/RecordingController.java | 54 ++++++++++--------- .../src/main/resources/application.properties | 2 +- .../src/controllers/AdminController.ts | 10 +++- 4 files changed, 53 insertions(+), 32 deletions(-) diff --git a/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/AdminController.java b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/AdminController.java index 621fa47e..acf4e473 100644 --- a/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/AdminController.java +++ b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/AdminController.java @@ -36,9 +36,10 @@ public class AdminController { private OpenViduService openviduService; @PostMapping("/login") - public ResponseEntity> login(@RequestBody(required = false) Map params, + public ResponseEntity login(@RequestBody(required = false) Map params, @CookieValue(name = OpenViduService.RECORDING_TOKEN_NAME, defaultValue = "") String recordingToken, HttpServletResponse res) { + String message = ""; Map response = new HashMap(); String password = params.get("password"); @@ -69,13 +70,21 @@ public class AdminController { return new ResponseEntity<>(response, HttpStatus.OK); } catch (OpenViduJavaClientException | OpenViduHttpException error) { + + if(Integer.parseInt(error.getMessage()) == 501) { + System.err.println(error.getMessage() + ". OpenVidu Server recording module is disabled."); + return new ResponseEntity<>(response, HttpStatus.OK); + } else { + message = error.getMessage() + " Unexpected error getting recordings"; + error.printStackTrace(); + System.err.println(message); + return new ResponseEntity<>(message, HttpStatus.INTERNAL_SERVER_ERROR); + } - error.printStackTrace(); - System.err.println(error.getMessage() + "Unexpected error getting recordings"); - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); } } else { - System.err.println("Permissions denied"); + message = "Permissions denied"; + System.err.println(message); return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); } diff --git a/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/RecordingController.java b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/RecordingController.java index d3433c17..dbcbba61 100644 --- a/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/RecordingController.java +++ b/openvidu-call/openvidu-call-back-java/src/main/java/io/openvidu/call/java/controllers/RecordingController.java @@ -43,7 +43,7 @@ public class RecordingController { private ProxyService proxyService; @GetMapping("") - public ResponseEntity> getRecordings( + public ResponseEntity getRecordings( @CookieValue(name = OpenViduService.RECORDING_TOKEN_NAME, defaultValue = "") String recordingToken) { try { List recordings = new ArrayList(); @@ -64,7 +64,7 @@ public class RecordingController { String message = IS_RECORDING_ENABLED ? "Permissions denied to drive recording" : "Recording is disabled"; System.err.println(message); - return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); + return new ResponseEntity<>(message, HttpStatus.FORBIDDEN); } } catch (OpenViduJavaClientException | OpenViduHttpException error) { @@ -75,13 +75,13 @@ public class RecordingController { message = "No recording exist for the session"; } System.err.println(message); - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); + return new ResponseEntity<>(message, HttpStatus.INTERNAL_SERVER_ERROR); } } @PostMapping("/start") - public ResponseEntity startRecording(@RequestBody(required = false) Map params, + public ResponseEntity startRecording(@RequestBody(required = false) Map params, @CookieValue(name = OpenViduService.RECORDING_TOKEN_NAME, defaultValue = "") String recordingToken) { try { @@ -93,9 +93,9 @@ public class RecordingController { return new ResponseEntity<>(startingRecording, HttpStatus.OK); } else { - - System.out.println("Permissions denied for starting recording in session " + sessionId); - return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); + String message = "Permissions denied for starting recording in session " + sessionId; + System.out.println(message); + return new ResponseEntity<>(message, HttpStatus.FORBIDDEN); } } catch (OpenViduJavaClientException | OpenViduHttpException error) { error.printStackTrace(); @@ -109,14 +109,14 @@ public class RecordingController { message = "The session has no connected participants"; } System.err.println(message); - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); + return new ResponseEntity<>(message, HttpStatus.INTERNAL_SERVER_ERROR); } } @PostMapping("/stop") - public ResponseEntity> stopRecording(@RequestBody(required = false) Map params, + public ResponseEntity stopRecording(@RequestBody(required = false) Map params, @CookieValue(name = OpenViduService.RECORDING_TOKEN_NAME, defaultValue = "") String recordingToken) { try { String sessionId = params.get("sessionId"); @@ -131,12 +131,14 @@ public class RecordingController { openviduService.recordingMap.get(sessionId).setRecordingId(""); return new ResponseEntity<>(recordingList, HttpStatus.OK); } else { - System.err.println("Session was not being recorded"); - return new ResponseEntity<>(null, HttpStatus.NOT_FOUND); + String message = "Session was not being recorded"; + System.err.println(message); + return new ResponseEntity<>(message, HttpStatus.NOT_FOUND); } } else { - System.err.println("Permissions denied to drive recording"); - return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); + String message = "Permissions denied to drive recording"; + System.err.println(message); + return new ResponseEntity<>(message, HttpStatus.FORBIDDEN); } } catch (OpenViduJavaClientException | OpenViduHttpException error) { error.printStackTrace(); @@ -148,12 +150,12 @@ public class RecordingController { message = "Recording has STARTING status. Wait until STARTED status before stopping the recording"; } System.err.println(message); - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); + return new ResponseEntity<>(message, HttpStatus.INTERNAL_SERVER_ERROR); } } @DeleteMapping("/delete/{recordingId}") - public ResponseEntity> deleteRecording(@PathVariable String recordingId, + public ResponseEntity deleteRecording(@PathVariable String recordingId, @CookieValue(name = OpenViduService.RECORDING_TOKEN_NAME, defaultValue = "") String recordingToken, @CookieValue(name = "session", defaultValue = "") String sessionToken) { try { @@ -163,8 +165,9 @@ public class RecordingController { if ((!sessionId.isEmpty() && openviduService.isValidToken(sessionId, recordingToken)) || isAdminDashboard) { if (recordingId.isEmpty()) { - System.err.println("Missing recording id parameter."); - return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST); + String message = "Missing recording id parameter."; + System.err.println(message); + return new ResponseEntity<>(message, HttpStatus.BAD_REQUEST); } System.out.println("Deleting recording " + recordingId); @@ -178,8 +181,9 @@ public class RecordingController { return new ResponseEntity<>(recordings, HttpStatus.OK); } else { - System.err.println("Permissions denied to drive recording"); - return new ResponseEntity<>(recordings, HttpStatus.FORBIDDEN); + String message = "Permissions denied to drive recording"; + System.err.println(message); + return new ResponseEntity<>(message, HttpStatus.FORBIDDEN); } } catch (OpenViduJavaClientException | OpenViduHttpException error) { error.printStackTrace(); @@ -193,7 +197,7 @@ public class RecordingController { message = "No recording exists for the session"; } System.err.println(message); - return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); + return new ResponseEntity<>(message, HttpStatus.INTERNAL_SERVER_ERROR); } } @@ -206,8 +210,9 @@ public class RecordingController { String sessionId = this.openviduService.getSessionIdFromCookie(recordingToken); if ((!sessionId.isEmpty() && openviduService.isValidToken(sessionId, recordingToken)) || isAdminDashboard) { if (recordingId.isEmpty()) { - System.err.println("Missing recording id parameter."); - return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST); + String message = "Missing recording id parameter."; + System.err.println(message); + return new ResponseEntity<>(message, HttpStatus.BAD_REQUEST); } else { try { return proxyService.processProxyRequest(req, res); @@ -217,8 +222,9 @@ public class RecordingController { return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR); } } else { - System.err.println("Permissions denied to drive recording"); - return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); + String message = "Permissions denied to drive recording"; + System.err.println(message); + return new ResponseEntity<>(message, HttpStatus.FORBIDDEN); } } diff --git a/openvidu-call/openvidu-call-back-java/src/main/resources/application.properties b/openvidu-call/openvidu-call-back-java/src/main/resources/application.properties index af4c8394..2c48b338 100644 --- a/openvidu-call/openvidu-call-back-java/src/main/resources/application.properties +++ b/openvidu-call/openvidu-call-back-java/src/main/resources/application.properties @@ -1,7 +1,7 @@ server.port: 5000 server.ssl.enabled: false -OPENVIDU_URL: https://demos.openvidu.io +OPENVIDU_URL: https://localhost:4443 OPENVIDU_SECRET: MY_SECRET RECORDING: ENABLED diff --git a/openvidu-call/openvidu-call-back/src/controllers/AdminController.ts b/openvidu-call/openvidu-call-back/src/controllers/AdminController.ts index 3d84a87d..fb17af15 100644 --- a/openvidu-call/openvidu-call-back/src/controllers/AdminController.ts +++ b/openvidu-call/openvidu-call-back/src/controllers/AdminController.ts @@ -28,8 +28,14 @@ app.post('/login', async (req: Request, res: Response) => { console.log(`${recordings.length} recordings found`); res.status(200).send(JSON.stringify({ recordings })); } catch (error) { - console.error(error); - res.status(500).send('Unexpected error getting recordings'); + const code = Number(error?.message); + if(code === 501){ + console.log('501. OpenVidu Server recording module is disabled.'); + res.status(200).send(); + } else { + console.error(error); + res.status(500).send('Unexpected error getting recordings'); + } } } else { res.status(403).send('Permissions denied');