openvidu-server: defaultOutputModeString param managed in REST API

pull/203/head
pabloFuente 2019-01-29 16:29:01 +01:00
parent c247de00bc
commit 9168de7b33
2 changed files with 20 additions and 7 deletions

View File

@ -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());

View File

@ -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");