mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: add "data" property to POST /api/sessions/ID/connection
parent
fb74074d9e
commit
dfa7d7539c
|
@ -153,7 +153,8 @@ public abstract class SessionManager {
|
||||||
public abstract void removeFilterEventListener(Session session, Participant subscriber, String streamId,
|
public abstract void removeFilterEventListener(Session session, Participant subscriber, String streamId,
|
||||||
String eventType);
|
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)
|
public abstract String getParticipantPrivateIdFromStreamId(String sessionId, String streamId)
|
||||||
throws OpenViduException;
|
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.isInsecureParticipant(participanPrivatetId)) {
|
||||||
if (this.sessionidTokenTokenobj.get(sessionId) != null) {
|
if (this.sessionidTokenTokenobj.get(sessionId) != null) {
|
||||||
return this.sessionidTokenTokenobj.get(sessionId).containsKey(token);
|
return this.sessionidTokenTokenobj.get(sessionId).containsKey(token);
|
||||||
|
@ -317,7 +319,7 @@ public abstract class SessionManager {
|
||||||
} else {
|
} else {
|
||||||
this.initializeCollections(sessionId);
|
this.initializeCollections(sessionId);
|
||||||
this.sessionidTokenTokenobj.get(sessionId).putIfAbsent(token,
|
this.sessionidTokenTokenobj.get(sessionId).putIfAbsent(token,
|
||||||
new Token(token, OpenViduRole.PUBLISHER, "",
|
new Token(token, OpenViduRole.PUBLISHER, serverMetadata,
|
||||||
this.coturnCredentialsService.isCoturnAvailable()
|
this.coturnCredentialsService.isCoturnAvailable()
|
||||||
? this.coturnCredentialsService.createUser()
|
? this.coturnCredentialsService.createUser()
|
||||||
: null,
|
: null,
|
||||||
|
|
|
@ -847,7 +847,7 @@ public class KurentoSessionManager extends SessionManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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 String sessionId = session.getSessionId();
|
||||||
final KurentoMediaOptions kMediaOptions = (KurentoMediaOptions) mediaOptions;
|
final KurentoMediaOptions kMediaOptions = (KurentoMediaOptions) mediaOptions;
|
||||||
|
|
||||||
|
@ -887,7 +887,7 @@ public class KurentoSessionManager extends SessionManager {
|
||||||
this.newInsecureParticipant(rtspConnectionId);
|
this.newInsecureParticipant(rtspConnectionId);
|
||||||
String token = RandomStringUtils.randomAlphanumeric(16).toLowerCase();
|
String token = RandomStringUtils.randomAlphanumeric(16).toLowerCase();
|
||||||
Token tokenObj = null;
|
Token tokenObj = null;
|
||||||
if (this.isTokenValidInSession(token, sessionId, rtspConnectionId)) {
|
if (this.isTokenValidInSession(token, sessionId, rtspConnectionId, serverMetadata)) {
|
||||||
tokenObj = this.consumeToken(sessionId, rtspConnectionId, token);
|
tokenObj = this.consumeToken(sessionId, rtspConnectionId, token);
|
||||||
}
|
}
|
||||||
Participant ipcamParticipant = this.newIpcamParticipant(sessionId, rtspConnectionId, tokenObj, location,
|
Participant ipcamParticipant = this.newIpcamParticipant(sessionId, rtspConnectionId, tokenObj, location,
|
||||||
|
|
|
@ -683,11 +683,13 @@ public class SessionRestController {
|
||||||
String rtspUri;
|
String rtspUri;
|
||||||
Boolean adaptativeBitrate;
|
Boolean adaptativeBitrate;
|
||||||
Boolean onlyPlayWithSubscribers;
|
Boolean onlyPlayWithSubscribers;
|
||||||
|
String data;
|
||||||
try {
|
try {
|
||||||
type = (String) params.get("type");
|
type = (String) params.get("type");
|
||||||
rtspUri = (String) params.get("rtspUri");
|
rtspUri = (String) params.get("rtspUri");
|
||||||
adaptativeBitrate = (Boolean) params.get("adaptativeBitrate");
|
adaptativeBitrate = (Boolean) params.get("adaptativeBitrate");
|
||||||
onlyPlayWithSubscribers = (Boolean) params.get("onlyPlayWithSubscribers");
|
onlyPlayWithSubscribers = (Boolean) params.get("onlyPlayWithSubscribers");
|
||||||
|
data = (String) params.get("data");
|
||||||
} catch (ClassCastException e) {
|
} catch (ClassCastException e) {
|
||||||
return this.generateErrorResponse("Type error in some parameter",
|
return this.generateErrorResponse("Type error in some parameter",
|
||||||
"/api/sessions/" + sessionId + "/connection", HttpStatus.BAD_REQUEST);
|
"/api/sessions/" + sessionId + "/connection", HttpStatus.BAD_REQUEST);
|
||||||
|
@ -700,6 +702,7 @@ public class SessionRestController {
|
||||||
type = type != null ? type : "IPCAM";
|
type = type != null ? type : "IPCAM";
|
||||||
adaptativeBitrate = adaptativeBitrate != null ? adaptativeBitrate : true;
|
adaptativeBitrate = adaptativeBitrate != null ? adaptativeBitrate : true;
|
||||||
onlyPlayWithSubscribers = onlyPlayWithSubscribers != null ? onlyPlayWithSubscribers : true;
|
onlyPlayWithSubscribers = onlyPlayWithSubscribers != null ? onlyPlayWithSubscribers : true;
|
||||||
|
data = data != null ? data : "";
|
||||||
|
|
||||||
boolean hasAudio = true;
|
boolean hasAudio = true;
|
||||||
boolean hasVideo = true;
|
boolean hasVideo = true;
|
||||||
|
@ -709,10 +712,11 @@ public class SessionRestController {
|
||||||
Integer frameRate = null;
|
Integer frameRate = null;
|
||||||
String videoDimensions = null;
|
String videoDimensions = null;
|
||||||
KurentoMediaOptions mediaOptions = new KurentoMediaOptions(true, null, hasAudio, hasVideo, audioActive,
|
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 {
|
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);
|
return new ResponseEntity<>(ipcamParticipant.toJson().toString(), getResponseHeaders(), HttpStatus.OK);
|
||||||
} catch (MalformedURLException e) {
|
} catch (MalformedURLException e) {
|
||||||
return this.generateErrorResponse("\"rtspUri\" parameter is not a valid rtsp uri",
|
return this.generateErrorResponse("\"rtspUri\" parameter is not a valid rtsp uri",
|
||||||
|
|
|
@ -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);
|
String clientMetadata = getStringParam(request, ProtocolElements.JOINROOM_METADATA_PARAM);
|
||||||
|
|
||||||
|
@ -651,7 +651,8 @@ public class RpcHandler extends DefaultJsonRpcHandler<JsonObject> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleUncaughtException(Session rpcSession, Exception exception) {
|
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
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue