summary refs log tree commit diff
path: root/extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-04-05 17:53:49 +0200
committerRory& <root@rory.gay>2026-04-06 01:24:54 +0200
commitb11ac9b4b4083e64dcf3089dea3b5ef2687829ab (patch)
treee8bc8ba7048c88bc238d017e6f530198de187816 /extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs
parentIntroduce CDN worker skeleton (diff)
downloadserver-ts-b11ac9b4b4083e64dcf3089dea3b5ef2687829ab.tar.xz
CS-CDN changes from worker stuff
Diffstat (limited to 'extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs')
-rw-r--r--extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs45
1 files changed, 25 insertions, 20 deletions
diff --git a/extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs b/extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs

index 133eb8e1..f8178540 100644 --- a/extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs +++ b/extra/admin-api/Spacebar.Cdn/Extensions/ImageController.cs
@@ -3,28 +3,33 @@ using Spacebar.AdminApi.TestClient.Services.Services; namespace Spacebar.Cdn.Extensions; -public class ImageController : ControllerBase { - protected DiscordImageResizeParams GetResizeParams() { - return new() { - Size = Request.Query.ContainsKey("size") && uint.TryParse(Request.Query["size"], out uint size) ? size : null, - Quality = Request.Query.ContainsKey("quality") && Enum.TryParse<DiscordImageResizeQuality>(Request.Query["quality"], true, out var quality) - ? quality - : DiscordImageResizeQuality.High, - KeepAspectRatio = !Request.Query.ContainsKey("keepAspectRatio") || !bool.TryParse(Request.Query["keepAspectRatio"], out bool kar) || kar, - Passthrough = Request.Query.ContainsKey("passthrough") && bool.TryParse(Request.Query["passthrough"], out bool pt) && pt, - Animated = Request.Query.ContainsKey("animated") && bool.TryParse(Request.Query["animated"], out bool an) && an, - SpacebarAllowUpscale = Request.Query.ContainsKey("allowUpscale") && bool.TryParse(Request.Query["allowUpscale"], out bool au) && au, - SpacebarOptimiseGif = Request.Query.ContainsKey("optimiseGif") && bool.TryParse(Request.Query["optimiseGif"], out bool og) && og, - }; - } - protected void SetSuccessCacheHeader() { - int cacheDuration = (int)TimeSpan.FromHours(6).TotalSeconds; - Response.Headers.CacheControl = $"public, max-age={cacheDuration}, s-maxage={cacheDuration}, immutable"; +public static class HttpRequestExtensions { + extension(HttpRequest request) { + public DiscordImageResizeParams GetResizeParams() { + return new() { + Size = request.Query.ContainsKey("size") && uint.TryParse(request.Query["size"], out uint size) ? size : null, + Quality = request.Query.ContainsKey("quality") && Enum.TryParse<DiscordImageResizeQuality>(request.Query["quality"], true, out var quality) + ? quality + : DiscordImageResizeQuality.High, + KeepAspectRatio = !request.Query.ContainsKey("keepAspectRatio") || !bool.TryParse(request.Query["keepAspectRatio"], out bool kar) || kar, + Passthrough = request.Query.ContainsKey("passthrough") && bool.TryParse(request.Query["passthrough"], out bool pt) && pt, + Animated = request.Query.ContainsKey("animated") && bool.TryParse(request.Query["animated"], out bool an) && an, + SpacebarAllowUpscale = request.Query.ContainsKey("allowUpscale") && bool.TryParse(request.Query["allowUpscale"], out bool au) && au, + SpacebarOptimiseGif = request.Query.ContainsKey("optimiseGif") && bool.TryParse(request.Query["optimiseGif"], out bool og) && og, + }; + } } + + extension (HttpResponse response) { + public void SetSuccessCacheHeader() { + int cacheDuration = (int)TimeSpan.FromHours(6).TotalSeconds; + response.Headers.CacheControl = $"public, max-age={cacheDuration}, s-maxage={cacheDuration}, immutable"; + } - protected void SetFailureCacheHeader() { - int cacheDuration = (int)TimeSpan.FromMinutes(5).TotalSeconds; - Response.Headers.CacheControl = $"public, max-age={cacheDuration}, s-maxage={cacheDuration}, immutable"; + public void SetFailureCacheHeader() { + int cacheDuration = (int)TimeSpan.FromMinutes(5).TotalSeconds; + response.Headers.CacheControl = $"public, max-age={cacheDuration}, s-maxage={cacheDuration}, immutable"; + } } } \ No newline at end of file