Skip to content

Commit 8eb3833

Browse files
committed
Support assistant sending over vmix config
1 parent 30ffb24 commit 8eb3833

3 files changed

Lines changed: 29 additions & 2 deletions

File tree

Controllers/AssistantController.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,19 @@ public async Task<Results<Ok, NotFound>> PushStreamKeys([FromRoute] Guid cartId,
3535
await assistantService.PushStreamKeys(cart);
3636
return TypedResults.Ok();
3737
}
38+
39+
[HttpGet("VmixConfig/{cartId:guid:required}")]
40+
public async Task<Results<Ok<string>, NoContent>> GetVmixConfig([FromRoute] Guid cartId)
41+
{
42+
try
43+
{
44+
var resp = await assistantService.GetVmixConfig(cartId);
45+
if (resp is null) return TypedResults.NoContent();
46+
return TypedResults.Ok(resp);
47+
}
48+
catch (OperationCanceledException)
49+
{
50+
return TypedResults.NoContent();
51+
}
52+
}
3853
}

Hubs/AssistantHub.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ public class AssistantHub(FimDbContext dbContext, FimRepository repository, Assi
1414
{
1515
private Guid CartId => Guid.Parse(Context.User?.FindFirst(ClaimTypes.CartId)?.Value ??
1616
throw new ApplicationException("No cart id"));
17+
18+
public static Dictionary<Guid, string> CartConnectionMap { get; set; } = new();
1719

1820
public override async Task OnConnectedAsync()
1921
{
22+
CartConnectionMap[CartId] = Context.ConnectionId;
2023
var log = new EquipmentLog
2124
{
2225
EquipmentId = CartId,
@@ -33,6 +36,9 @@ public override async Task OnConnectedAsync()
3336

3437
public override async Task OnDisconnectedAsync(Exception? exception)
3538
{
39+
if (CartConnectionMap.TryGetValue(CartId, out var mappedConn) && mappedConn == Context.ConnectionId)
40+
CartConnectionMap.Remove(CartId);
41+
3642
var log = new EquipmentLog
3743
{
3844
EquipmentId = CartId,

Services/AssistantService.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using fim_queueing_admin.Data;
22
using fim_queueing_admin.Hubs;
33
using fim_queueing_admin.Models;
4-
using Firebase.Database;
5-
using Firebase.Database.Query;
64
using Microsoft.AspNetCore.SignalR;
75
using Microsoft.EntityFrameworkCore;
86

@@ -73,4 +71,12 @@ public async Task PushStreamKeys(Cart cart, IClientProxy? clients = null)
7371
i.RtmpKey
7472
}).ToList());
7573
}
74+
75+
public async Task<string?> GetVmixConfig(Guid cartId)
76+
{
77+
if (!AssistantHub.CartConnectionMap.TryGetValue(cartId, out var connId)) return null;
78+
79+
var cancelSource = new CancellationTokenSource(TimeSpan.FromSeconds(15));
80+
return await hubContext.Clients.Client(connId).InvokeAsync<string>("GetVmixConfig", cancelSource.Token);
81+
}
7682
}

0 commit comments

Comments
 (0)