summary refs log tree commit diff
path: root/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-03-11 00:58:13 +0100
committerRory& <root@rory.gay>2026-03-11 00:58:13 +0100
commitb40b5234f4cb3681bd9531d76c38111057f71733 (patch)
treeae238a01834f25871631b84d19141019c56c8f1b /extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs
parentfix: fall back to undefined in message create (diff)
downloadserver-ts-dev/emma/gateway-batch-presence-lookup.tar.xz
Diffstat (limited to 'extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs')
-rw-r--r--extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs41
1 files changed, 36 insertions, 5 deletions
diff --git a/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs b/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs

index e2ad1377..5d9d0d78 100644 --- a/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs +++ b/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs
@@ -1,6 +1,6 @@ -using System.Collections.Immutable; using ArcaneLibs.Extensions.Streams; using Microsoft.AspNetCore.Mvc; +using Microsoft.OpenApi; using Spacebar.AdminApi.TestClient.Services.Services; using Spacebar.Cdn.Extensions; using Spacebar.Interop.Cdn.Abstractions; @@ -28,8 +28,39 @@ public class StaticAssetController(LruFileCache lfc, IFileSource fs, DiscordImag { "6", "1276374a404452756f3c9cc2601508a5" }, { "7", "904bf9f1b61f53ef4a3b7a893afeabe3" }, }; - // [HttpGet("/embed/avatars/{userIndex}")] - // public async Task<IActionResult> GetDefaultUserAvatar(string userIndex) { - // - // } + + // png only + [HttpGet("/embed/avatars/{userIndex}.{ext}")] + public async Task<IActionResult> GetDefaultUserAvatar(string userIndex, string ext) { + + var cacheKey = Request.Path + Request.QueryString; + + DiscordImageResizeParams resizeParams = GetResizeParams(); + + var entry = await lfc.GetOrAdd(cacheKey, async () => { + var original = await fs.GetFile(Request.Path); + + if (Request.Query.Any()) { + using var img = await original.ToMagickImageCollectionAsync(); + dirs.Apply(img, resizeParams); + + var outStream = new MemoryStream(); + await img.WriteAsync(outStream, img.First().Format); + outStream.Position = 0; + + return new LruFileCache.Entry() { + Data = outStream.ReadToEnd().ToArray(), + MimeType = original.MimeType + }; + } + + return new LruFileCache.Entry() { + Data = original.Stream.ReadToEnd().ToArray(), + MimeType = original.MimeType + }; + }); + + // byte array with mime type result + return new FileContentResult(entry.Data, entry.MimeType); + } } \ No newline at end of file