diff --git a/openvidu-basic-dotnet/Program.cs b/openvidu-basic-dotnet/Program.cs index 44de0cb6..d96a1aca 100644 --- a/openvidu-basic-dotnet/Program.cs +++ b/openvidu-basic-dotnet/Program.cs @@ -1,4 +1,5 @@ using System.Text; +using System.Text.Json; using System.Net; using System.Net.Http.Headers; using Microsoft.AspNetCore.Mvc; @@ -26,6 +27,7 @@ IConfiguration config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .AddEnvironmentVariables().Build(); +// Load env variables var OPENVIDU_URL = config.GetValue("OPENVIDU_URL"); var OPENVIDU_SECRET = config.GetValue("OPENVIDU_SECRET"); @@ -41,25 +43,36 @@ client.BaseAddress = new System.Uri(OPENVIDU_URL); var basicAuth = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes($"OPENVIDUAPP:{OPENVIDU_SECRET}")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", basicAuth); -app.MapPost("/sessions", async (HttpContext context) => +app.MapPost("/sessions", async (HttpRequest request) => { - HttpContent content = new StringContent(context.Request.Body.ToString(), Encoding.UTF8, "application/json"); - HttpResponseMessage response = await client.PostAsJsonAsync("openvidu/api/sessions", content); + String contentString; + HttpContent content; + using (var streamContent = new StreamContent(request.Body)) { + contentString = await streamContent.ReadAsStringAsync(); + content = new StringContent(contentString, Encoding.UTF8, "application/json"); + } + HttpResponseMessage response = await client.PostAsync("openvidu/api/sessions", content); if (response.StatusCode == HttpStatusCode.Conflict) { - var json = await context.Request.ReadFromJsonAsync>(); - return json["customSessionId"]; + // Session already exists in OpenVidu + var bodyRequest = JsonSerializer.Deserialize>(contentString); + return bodyRequest["customSessionId"]; } response.EnsureSuccessStatusCode(); var responseBody = await response.Content.ReadFromJsonAsync>(); return responseBody["sessionId"]; }); -app.MapPost("/sessions/{sessionId}/connections", async ([FromRoute] string sessionId, [FromBody] string json) => +app.MapPost("/sessions/{sessionId}/connections", async (HttpRequest request, [FromRoute] string sessionId) => { - HttpContent content = new StringContent(json, Encoding.UTF8, "application/json"); - HttpResponseMessage response = await client.PostAsync("openvidu/api/sessions/" + sessionId + "/connections", content); + HttpContent content; + using (var streamContent = new StreamContent(request.Body)) { + var contentString = await streamContent.ReadAsStringAsync(); + content = new StringContent(contentString, Encoding.UTF8, "application/json"); + } + HttpResponseMessage response = await client.PostAsync("openvidu/api/sessions/" + sessionId + "/connection", content); response.EnsureSuccessStatusCode(); - string responseBody = await response.Content.ReadAsStringAsync(); + var responseBody = await response.Content.ReadFromJsonAsync>(); + return responseBody["token"]; }); app.Run(); \ No newline at end of file diff --git a/openvidu-basic-python/app.py b/openvidu-basic-python/app.py index 6401daf5..8724792b 100644 --- a/openvidu-basic-python/app.py +++ b/openvidu-basic-python/app.py @@ -4,8 +4,11 @@ from flask import Flask, request from flask_cors import CORS app = Flask(__name__) + +# Enable CORS support cors = CORS(app, resources={r"/*": {"origins": "*"}}) +# Load env variables OPENVIDU_URL = os.environ.get("OPENVIDU_URL") OPENVIDU_SECRET = os.environ.get("OPENVIDU_SECRET")