Fully working openvidu-basic-dotnet

This commit is contained in:
pabloFuente 2022-07-07 11:35:45 +02:00
parent 696cde2777
commit 36e3f412e3
2 changed files with 25 additions and 9 deletions

View File

@ -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<string>("OPENVIDU_URL");
var OPENVIDU_SECRET = config.GetValue<string>("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<Dictionary<string, object>>();
return json["customSessionId"];
// Session already exists in OpenVidu
var bodyRequest = JsonSerializer.Deserialize<Dictionary<string, object>>(contentString);
return bodyRequest["customSessionId"];
}
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadFromJsonAsync<Dictionary<string, object>>();
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<Dictionary<string, object>>();
return responseBody["token"];
});
app.Run();

View File

@ -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")