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;
import io.openvidu.client.OpenViduException.Code; import io.openvidu.client.OpenViduException.Code;
import io.openvidu.client.internal.ProtocolElements; import io.openvidu.client.internal.ProtocolElements;
import io.openvidu.java.client.Recording;
import io.openvidu.java.client.RecordingLayout; import io.openvidu.java.client.RecordingLayout;
import io.openvidu.java.client.SessionProperties; import io.openvidu.java.client.SessionProperties;
import io.openvidu.server.cdr.CallDetailRecord; import io.openvidu.server.cdr.CallDetailRecord;
@ -387,9 +388,12 @@ public class KurentoSession implements Session {
json.addProperty("createdAt", this.startTime); json.addProperty("createdAt", this.startTime);
json.addProperty("mediaMode", this.sessionProperties.mediaMode().name()); json.addProperty("mediaMode", this.sessionProperties.mediaMode().name());
json.addProperty("recordingMode", this.sessionProperties.recordingMode().name()); json.addProperty("recordingMode", this.sessionProperties.recordingMode().name());
json.addProperty("defaultRecordingLayout", this.sessionProperties.defaultRecordingLayout().name()); json.addProperty("defaultOutputMode", this.sessionProperties.defaultOutputMode().name());
if (RecordingLayout.CUSTOM.equals(this.sessionProperties.defaultRecordingLayout())) { if (Recording.OutputMode.COMPOSED.equals(this.sessionProperties.defaultOutputMode())) {
json.addProperty("defaultCustomLayout", this.sessionProperties.defaultCustomLayout()); 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) { if (this.sessionProperties.customSessionId() != null) {
json.addProperty("customSessionId", this.sessionProperties.customSessionId()); 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.OpenViduException;
import io.openvidu.client.internal.ProtocolElements; import io.openvidu.client.internal.ProtocolElements;
import io.openvidu.java.client.MediaMode; import io.openvidu.java.client.MediaMode;
import io.openvidu.java.client.Recording.OutputMode;
import io.openvidu.java.client.RecordingLayout; import io.openvidu.java.client.RecordingLayout;
import io.openvidu.java.client.RecordingMode; import io.openvidu.java.client.RecordingMode;
import io.openvidu.java.client.RecordingProperties; import io.openvidu.java.client.RecordingProperties;
@ -87,6 +88,7 @@ public class SessionRestController {
if (params != null) { if (params != null) {
String mediaModeString = (String) params.get("mediaMode"); String mediaModeString = (String) params.get("mediaMode");
String recordingModeString = (String) params.get("recordingMode"); String recordingModeString = (String) params.get("recordingMode");
String defaultOutputModeString = (String) params.get("defaultOutputMode");
String defaultRecordingLayoutString = (String) params.get("defaultRecordingLayout"); String defaultRecordingLayoutString = (String) params.get("defaultRecordingLayout");
String defaultCustomLayout = (String) params.get("defaultCustomLayout"); String defaultCustomLayout = (String) params.get("defaultCustomLayout");
@ -101,6 +103,12 @@ public class SessionRestController {
} else { } else {
builder = builder.recordingMode(RecordingMode.MANUAL); 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) { if (defaultRecordingLayoutString != null) {
RecordingLayout defaultRecordingLayout = RecordingLayout.valueOf(defaultRecordingLayoutString); RecordingLayout defaultRecordingLayout = RecordingLayout.valueOf(defaultRecordingLayoutString);
builder = builder.defaultRecordingLayout(defaultRecordingLayout); builder = builder.defaultRecordingLayout(defaultRecordingLayout);
@ -120,8 +128,9 @@ public class SessionRestController {
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
return this.generateErrorResponse("RecordingMode " + params.get("recordingMode") + " | " return this.generateErrorResponse("RecordingMode " + params.get("recordingMode") + " | "
+ "Default RecordingLayout " + params.get("defaultRecordingLayout") + " | " + "MediaMode " + "Default OutputMode " + params.get("defaultOutputMode") + " | " + "Default RecordingLayout "
+ params.get("mediaMode") + " are not defined", "/api/tokens", HttpStatus.BAD_REQUEST); + params.get("defaultRecordingLayout") + " | " + "MediaMode " + params.get("mediaMode")
+ " are not defined", "/api/tokens", HttpStatus.BAD_REQUEST);
} }
} }
@ -360,7 +369,7 @@ public class SessionRestController {
try { try {
outputMode = io.openvidu.java.client.Recording.OutputMode.valueOf(outputModeString); outputMode = io.openvidu.java.client.Recording.OutputMode.valueOf(outputModeString);
} catch (Exception e) { } 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) RecordingProperties.Builder builder = new RecordingProperties.Builder().name(name).outputMode(outputMode)
.hasAudio(hasAudio != null ? hasAudio : true).hasVideo(hasVideo != null ? hasVideo : true); .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(), Recording stoppedRecording = this.recordingManager.stopRecording(session, recording.getId(),
"recordingStoppedByServer"); "recordingStoppedByServer");
if (session != null) { if (session != null && OutputMode.COMPOSED.equals(recording.getOutputMode()) && recording.hasVideo()) {
sessionManager.evictParticipant( sessionManager.evictParticipant(
session.getParticipantByPublicId(ProtocolElements.RECORDER_PARTICIPANT_PUBLICID), null, null, session.getParticipantByPublicId(ProtocolElements.RECORDER_PARTICIPANT_PUBLICID), null, null,
"EVICT_RECORDER"); "EVICT_RECORDER");