openvidu-server: add "data" property to POST /api/sessions/ID/connection

pull/370/head
pabloFuente 2019-10-31 10:31:27 +01:00
parent fb74074d9e
commit dfa7d7539c
4 changed files with 16 additions and 9 deletions

View File

@ -153,7 +153,8 @@ public abstract class SessionManager {
public abstract void removeFilterEventListener(Session session, Participant subscriber, String streamId,
String eventType);
public abstract Participant publishIpcam(Session session, MediaOptions mediaOptions) throws Exception;
public abstract Participant publishIpcam(Session session, MediaOptions mediaOptions, String serverMetadata)
throws Exception;
public abstract String getParticipantPrivateIdFromStreamId(String sessionId, String streamId)
throws OpenViduException;
@ -307,7 +308,8 @@ public abstract class SessionManager {
}
}
public boolean isTokenValidInSession(String token, String sessionId, String participanPrivatetId) {
public boolean isTokenValidInSession(String token, String sessionId, String participanPrivatetId,
String serverMetadata) {
if (!this.isInsecureParticipant(participanPrivatetId)) {
if (this.sessionidTokenTokenobj.get(sessionId) != null) {
return this.sessionidTokenTokenobj.get(sessionId).containsKey(token);
@ -317,7 +319,7 @@ public abstract class SessionManager {
} else {
this.initializeCollections(sessionId);
this.sessionidTokenTokenobj.get(sessionId).putIfAbsent(token,
new Token(token, OpenViduRole.PUBLISHER, "",
new Token(token, OpenViduRole.PUBLISHER, serverMetadata,
this.coturnCredentialsService.isCoturnAvailable()
? this.coturnCredentialsService.createUser()
: null,

View File

@ -847,7 +847,7 @@ public class KurentoSessionManager extends SessionManager {
}
@Override
public Participant publishIpcam(Session session, MediaOptions mediaOptions) throws Exception {
public Participant publishIpcam(Session session, MediaOptions mediaOptions, String serverMetadata) throws Exception {
final String sessionId = session.getSessionId();
final KurentoMediaOptions kMediaOptions = (KurentoMediaOptions) mediaOptions;
@ -887,7 +887,7 @@ public class KurentoSessionManager extends SessionManager {
this.newInsecureParticipant(rtspConnectionId);
String token = RandomStringUtils.randomAlphanumeric(16).toLowerCase();
Token tokenObj = null;
if (this.isTokenValidInSession(token, sessionId, rtspConnectionId)) {
if (this.isTokenValidInSession(token, sessionId, rtspConnectionId, serverMetadata)) {
tokenObj = this.consumeToken(sessionId, rtspConnectionId, token);
}
Participant ipcamParticipant = this.newIpcamParticipant(sessionId, rtspConnectionId, tokenObj, location,

View File

@ -683,11 +683,13 @@ public class SessionRestController {
String rtspUri;
Boolean adaptativeBitrate;
Boolean onlyPlayWithSubscribers;
String data;
try {
type = (String) params.get("type");
rtspUri = (String) params.get("rtspUri");
adaptativeBitrate = (Boolean) params.get("adaptativeBitrate");
onlyPlayWithSubscribers = (Boolean) params.get("onlyPlayWithSubscribers");
data = (String) params.get("data");
} catch (ClassCastException e) {
return this.generateErrorResponse("Type error in some parameter",
"/api/sessions/" + sessionId + "/connection", HttpStatus.BAD_REQUEST);
@ -700,6 +702,7 @@ public class SessionRestController {
type = type != null ? type : "IPCAM";
adaptativeBitrate = adaptativeBitrate != null ? adaptativeBitrate : true;
onlyPlayWithSubscribers = onlyPlayWithSubscribers != null ? onlyPlayWithSubscribers : true;
data = data != null ? data : "";
boolean hasAudio = true;
boolean hasVideo = true;
@ -709,10 +712,11 @@ public class SessionRestController {
Integer frameRate = null;
String videoDimensions = null;
KurentoMediaOptions mediaOptions = new KurentoMediaOptions(true, null, hasAudio, hasVideo, audioActive,
videoActive, typeOfVideo, frameRate, videoDimensions, null, false, rtspUri, adaptativeBitrate, onlyPlayWithSubscribers);
videoActive, typeOfVideo, frameRate, videoDimensions, null, false, rtspUri, adaptativeBitrate,
onlyPlayWithSubscribers);
try {
Participant ipcamParticipant = this.sessionManager.publishIpcam(session, mediaOptions);
Participant ipcamParticipant = this.sessionManager.publishIpcam(session, mediaOptions, data);
return new ResponseEntity<>(ipcamParticipant.toJson().toString(), getResponseHeaders(), HttpStatus.OK);
} catch (MalformedURLException e) {
return this.generateErrorResponse("\"rtspUri\" parameter is not a valid rtsp uri",

View File

@ -237,7 +237,7 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
}
}
if (sessionManager.isTokenValidInSession(token, sessionId, participantPrivatetId)) {
if (sessionManager.isTokenValidInSession(token, sessionId, participantPrivatetId, "")) {
String clientMetadata = getStringParam(request, ProtocolElements.JOINROOM_METADATA_PARAM);
@ -651,7 +651,8 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
@Override
public void handleUncaughtException(Session rpcSession, Exception exception) {
log.error("Uncaught exception for WebSocket session: {} - Exception: {}", rpcSession != null ? rpcSession.getSessionId() : "RpcSession NULL", exception);
log.error("Uncaught exception for WebSocket session: {} - Exception: {}",
rpcSession != null ? rpcSession.getSessionId() : "RpcSession NULL", exception);
}
@Override