From 9168de7b33baa2a68ba7c36ea1db199b315eddcc Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Tue, 29 Jan 2019 16:29:01 +0100 Subject: [PATCH] openvidu-server: defaultOutputModeString param managed in REST API --- .../server/kurento/core/KurentoSession.java | 10 +++++++--- .../server/rest/SessionRestController.java | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java index e40bc90c..ff30993a 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java +++ b/openvidu-server/src/main/java/io/openvidu/server/kurento/core/KurentoSession.java @@ -41,6 +41,7 @@ import com.google.gson.JsonObject; import io.openvidu.client.OpenViduException; import io.openvidu.client.OpenViduException.Code; import io.openvidu.client.internal.ProtocolElements; +import io.openvidu.java.client.Recording; import io.openvidu.java.client.RecordingLayout; import io.openvidu.java.client.SessionProperties; import io.openvidu.server.cdr.CallDetailRecord; @@ -387,9 +388,12 @@ public class KurentoSession implements Session { json.addProperty("createdAt", this.startTime); json.addProperty("mediaMode", this.sessionProperties.mediaMode().name()); json.addProperty("recordingMode", this.sessionProperties.recordingMode().name()); - json.addProperty("defaultRecordingLayout", this.sessionProperties.defaultRecordingLayout().name()); - if (RecordingLayout.CUSTOM.equals(this.sessionProperties.defaultRecordingLayout())) { - json.addProperty("defaultCustomLayout", this.sessionProperties.defaultCustomLayout()); + json.addProperty("defaultOutputMode", this.sessionProperties.defaultOutputMode().name()); + if (Recording.OutputMode.COMPOSED.equals(this.sessionProperties.defaultOutputMode())) { + json.addProperty("defaultRecordingLayout", this.sessionProperties.defaultRecordingLayout().name()); + if (RecordingLayout.CUSTOM.equals(this.sessionProperties.defaultRecordingLayout())) { + json.addProperty("defaultCustomLayout", this.sessionProperties.defaultCustomLayout()); + } } if (this.sessionProperties.customSessionId() != null) { json.addProperty("customSessionId", this.sessionProperties.customSessionId()); diff --git a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java index c668c482..a361297c 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java @@ -43,6 +43,7 @@ import com.google.gson.JsonParser; import io.openvidu.client.OpenViduException; import io.openvidu.client.internal.ProtocolElements; import io.openvidu.java.client.MediaMode; +import io.openvidu.java.client.Recording.OutputMode; import io.openvidu.java.client.RecordingLayout; import io.openvidu.java.client.RecordingMode; import io.openvidu.java.client.RecordingProperties; @@ -87,6 +88,7 @@ public class SessionRestController { if (params != null) { String mediaModeString = (String) params.get("mediaMode"); String recordingModeString = (String) params.get("recordingMode"); + String defaultOutputModeString = (String) params.get("defaultOutputMode"); String defaultRecordingLayoutString = (String) params.get("defaultRecordingLayout"); String defaultCustomLayout = (String) params.get("defaultCustomLayout"); @@ -101,6 +103,12 @@ public class SessionRestController { } else { builder = builder.recordingMode(RecordingMode.MANUAL); } + if (defaultOutputModeString != null) { + OutputMode defaultOutputMode = OutputMode.valueOf(defaultOutputModeString); + builder = builder.defaultOutputMode(defaultOutputMode); + } else { + builder.defaultOutputMode(OutputMode.COMPOSED); + } if (defaultRecordingLayoutString != null) { RecordingLayout defaultRecordingLayout = RecordingLayout.valueOf(defaultRecordingLayoutString); builder = builder.defaultRecordingLayout(defaultRecordingLayout); @@ -120,8 +128,9 @@ public class SessionRestController { } catch (IllegalArgumentException e) { return this.generateErrorResponse("RecordingMode " + params.get("recordingMode") + " | " - + "Default RecordingLayout " + params.get("defaultRecordingLayout") + " | " + "MediaMode " - + params.get("mediaMode") + " are not defined", "/api/tokens", HttpStatus.BAD_REQUEST); + + "Default OutputMode " + params.get("defaultOutputMode") + " | " + "Default RecordingLayout " + + params.get("defaultRecordingLayout") + " | " + "MediaMode " + params.get("mediaMode") + + " are not defined", "/api/tokens", HttpStatus.BAD_REQUEST); } } @@ -360,7 +369,7 @@ public class SessionRestController { try { outputMode = io.openvidu.java.client.Recording.OutputMode.valueOf(outputModeString); } catch (Exception e) { - outputMode = io.openvidu.java.client.Recording.OutputMode.COMPOSED; + outputMode = session.getSessionProperties().defaultOutputMode(); } RecordingProperties.Builder builder = new RecordingProperties.Builder().name(name).outputMode(outputMode) .hasAudio(hasAudio != null ? hasAudio : true).hasVideo(hasVideo != null ? hasVideo : true); @@ -443,7 +452,7 @@ public class SessionRestController { Recording stoppedRecording = this.recordingManager.stopRecording(session, recording.getId(), "recordingStoppedByServer"); - if (session != null) { + if (session != null && OutputMode.COMPOSED.equals(recording.getOutputMode()) && recording.hasVideo()) { sessionManager.evictParticipant( session.getParticipantByPublicId(ProtocolElements.RECORDER_PARTICIPANT_PUBLICID), null, null, "EVICT_RECORDER");