summary refs log tree commit diff
path: root/extra/admin-api/Spacebar.GatewayOffload/Controllers/ChannelStatusController.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-03-19 08:38:20 +0100
committerRory& <root@rory.gay>2026-03-19 08:38:20 +0100
commitd0eac0b8e7738c645707b52e386ca1e2079b8da8 (patch)
treec8fc5b135ec94f6351e025ff7df472f83db4c6c5 /extra/admin-api/Spacebar.GatewayOffload/Controllers/ChannelStatusController.cs
parentCDN: use file contents for hashes, the fuck (diff)
downloadserver-ts-d0eac0b8e7738c645707b52e386ca1e2079b8da8.tar.xz
GatewayOffload: rename to Offload
Diffstat (limited to 'extra/admin-api/Spacebar.GatewayOffload/Controllers/ChannelStatusController.cs')
-rw-r--r--extra/admin-api/Spacebar.GatewayOffload/Controllers/ChannelStatusController.cs68
1 files changed, 0 insertions, 68 deletions
diff --git a/extra/admin-api/Spacebar.GatewayOffload/Controllers/ChannelStatusController.cs b/extra/admin-api/Spacebar.GatewayOffload/Controllers/ChannelStatusController.cs
deleted file mode 100644

index 0843218ed..000000000 --- a/extra/admin-api/Spacebar.GatewayOffload/Controllers/ChannelStatusController.cs +++ /dev/null
@@ -1,68 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using System.Text.Json; -using System.Text.Json.Nodes; -using System.Text.Json.Serialization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using Spacebar.Interop.Authentication.AspNetCore; -using Spacebar.Interop.Replication.Abstractions; -using Spacebar.Models.Db.Contexts; -using Spacebar.Models.Gateway; - -namespace Spacebar.GatewayOffload.Controllers; - -[ApiController] -[Route("/_spacebar/offload/gateway")] -public class ChannelStatusController(ILogger<ChannelStatusController> logger, SpacebarAspNetAuthenticationService authService, SpacebarDbContext db, IServiceProvider sp) - : ControllerBase { - [HttpPost("ChannelStatuses")] - public async IAsyncEnumerable<ReplicationMessage<ChannelStatusesResponse>> GetChannelStatuses([FromBody] ChannelStatusesRequest req) { - await foreach (var res in GetChannelInfos(new() { - Fields = ["status"], - GuildIdRawValue = req.GuildIdRawValue, - })) { - yield return new() { - Payload = new() { - GuildId = res.Payload.GuildId, - Channels = res.Payload.Channels.Select(c => new ChannelStatus { - ChannelId = c.ChannelId, - Status = c.Status!, - }).ToList(), - } - }; - } - } - - [HttpPost("ChannelInfo")] - public async IAsyncEnumerable<ReplicationMessage<ChannelInfoResponse>> GetChannelInfos([FromBody] ChannelInfoRequest req) { - var user = await authService.GetCurrentUserAsync(Request); - string[] statusOptions = [ - "Vibing ✨", - "Hanging out: 12%...", - "Communicating...", - // idk, i cant come up with more stuff, maybe suggestions welcome, or actually storing some data? - ]; - - foreach (var guildId in req.GuildIds ?? [req.GuildId!]) { - var channels = (await db.Channels.Include(x => x.VoiceStates).Where(x => x.Type == 2 && x.GuildId == guildId && x.VoiceStates.Count > 0) - .Select(x => x.Id) - .ToListAsync()) - .Select(x => new { - id = x, - status = statusOptions[new Random().Next(statusOptions.Length)], // TODO: We don't currently store channel statuses, so make some stuff up - voiceStartTime = DateTime.Now.Subtract(TimeSpan.FromMinutes(new Random().Next(1, 120))), // TODO: We also don't store voice start times, so make some stuff up - }).ToList(); - - yield return new() { - Payload = new() { - GuildId = guildId, - Channels = channels.Select(c => new ChannelInfo { - ChannelId = c.id, - Status = req.Fields.Contains("status") ? c.status : null, - VoiceStartTime = req.Fields.Contains("voice_start_time") ? c.voiceStartTime : null, - }).ToList(), - }, - }; - } - } -} \ No newline at end of file