openvidu-server: Add customIceServers to REST post of connection

pull/698/head
cruizba 2022-02-02 18:44:19 +01:00
parent d7eae78372
commit ad778ff0d3
1 changed files with 33 additions and 10 deletions

View File

@ -26,6 +26,7 @@ import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import io.openvidu.java.client.*;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -51,17 +52,7 @@ import com.google.gson.JsonParser;
import io.openvidu.client.OpenViduException;
import io.openvidu.client.OpenViduException.Code;
import io.openvidu.client.internal.ProtocolElements;
import io.openvidu.java.client.ConnectionProperties;
import io.openvidu.java.client.ConnectionType;
import io.openvidu.java.client.KurentoOptions;
import io.openvidu.java.client.MediaMode;
import io.openvidu.java.client.OpenViduRole;
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;
import io.openvidu.java.client.SessionProperties;
import io.openvidu.java.client.VideoCodec;
import io.openvidu.server.config.OpenviduConfig;
import io.openvidu.server.core.EndReason;
import io.openvidu.server.core.IdentifierPrefixes;
@ -914,6 +905,36 @@ public class SessionRestController {
}
}
// Custom Ice Servers
JsonArray customIceServersJsonArray = null;
if (params.get("customIceServers") != null) {
try {
customIceServersJsonArray = new Gson().toJsonTree(params.get("customIceServers"), Map.class)
.getAsJsonArray();
} catch (Exception e) {
throw new Exception("Error in parameter 'customIceServersJson'. It is not a valid JSON object");
}
}
if (customIceServersJsonArray != null) {
try {
for (int i = 0; i < customIceServersJsonArray.size(); i++) {
JsonObject customIceServerJson = customIceServersJsonArray.get(i).getAsJsonObject();
IceServerProperties.Builder iceServerPropertiesBuilder = new IceServerProperties.Builder();
iceServerPropertiesBuilder.url(customIceServerJson.get("urls").getAsString());
if (customIceServerJson.has("username")) {
iceServerPropertiesBuilder.username(customIceServerJson.get("username").getAsString());
}
if (customIceServerJson.has("credential")) {
iceServerPropertiesBuilder.credential(customIceServerJson.get("credential").getAsString());
}
IceServerProperties iceServerProperties = iceServerPropertiesBuilder.build();
builder.addCustomIceServer(iceServerProperties);
}
} catch (Exception e) {
throw new Exception("Type error in some parameter of 'kurentoOptions': " + e.getMessage());
}
}
// Build WEBRTC options
builder.role(role).kurentoOptions(kurentoOptions);
@ -939,6 +960,8 @@ public class SessionRestController {
.onlyPlayWithSubscribers(onlyPlayWithSubscribers).networkCache(networkCache).build();
}
return builder;
}