diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Controllers/ImageResizeController.cs b/extra/admin-api/Spacebar.Cdn.Worker/Controllers/ImageResizeController.cs
deleted file mode 100644
index 7ba269655..000000000
--- a/extra/admin-api/Spacebar.Cdn.Worker/Controllers/ImageResizeController.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-
-namespace Spacebar.Cdn.Worker.Controllers;
-
-[ApiController]
-public class ImageResizeController : ControllerBase {
-
-}
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/DiscordImageResizeService.cs b/extra/admin-api/Spacebar.Cdn.Worker/DiscordImageResizeService.cs
index 64e726602..7aaf312e3 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/DiscordImageResizeService.cs
+++ b/extra/admin-api/Spacebar.Cdn.Worker/DiscordImageResizeService.cs
@@ -75,7 +75,7 @@ public class DiscordImageResizeService {
// pads.IsPixelArt(frame)
frame.Resize(resizeParams.Size.Value, resizeParams.Size.Value,
resizeParams.Quality == DiscordImageResizeQuality.Low ? FilterType.Point : FilterType.Gaussian);
- Console.WriteLine($"Resized frame from {oldWidth}x{oldHeight} to {frame.Width}x{frame.Height}: {img.IndexOf(frame)}/{img.Count}");
+ Console.WriteLine($"Resized frame from {oldWidth}x{oldHeight} to {frame.Width}x{frame.Height}: {img.IndexOf(frame)+1}/{img.Count}");
}
});
}
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Mimes.cs b/extra/admin-api/Spacebar.Cdn.Worker/Mimes.cs
index 8337e81d9..a60cee1c5 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Mimes.cs
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Mimes.cs
@@ -40,7 +40,7 @@ public static class Mimes {
public static string GetMime(MagickFormat fmt) => fmt switch {
MagickFormat.Png => "image/png",
- MagickFormat.Jpeg => "image/jpeg",
+ MagickFormat.Jpeg or MagickFormat.Jpg => "image/jpeg",
MagickFormat.Gif => "image/gif",
MagickFormat.Bmp => "image/bmp",
MagickFormat.Tiff => "image/tiff",
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Program.cs b/extra/admin-api/Spacebar.Cdn.Worker/Program.cs
index a722e666b..9c60d7413 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Program.cs
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Program.cs
@@ -1,10 +1,5 @@
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
using System.Globalization;
-using ArcaneLibs;
-using ArcaneLibs.Extensions.Streams;
using ImageMagick;
-using Microsoft.AspNetCore.Mvc;
using Spacebar.AdminApi.TestClient.Services.Helpers;
using Spacebar.AdminApi.TestClient.Services.Services;
using Spacebar.Cdn.Worker;
@@ -12,7 +7,7 @@ using Spacebar.Interop.Cdn.Abstractions;
var builder = WebApplication.CreateBuilder(args);
-var sw = Stopwatch.StartNew();
+// var sw = Stopwatch.StartNew();
Console.WriteLine("Pre-initializing Magick.NET...");
// OpenCL.IsEnabled = true;
MagickNET.Initialize();
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.AnyCPU.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.AnyCPU.csproj
index 2c2b794b8..38abbbc9a 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.AnyCPU.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.AnyCPU.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.aarch64.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.aarch64.csproj
index 16d278df8..688b758e9 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.aarch64.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.aarch64.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.x86_64.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.x86_64.csproj
index 34f49b8e1..6c6983873 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.x86_64.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16-HDRI.x86_64.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.AnyCPU.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.AnyCPU.csproj
index 48e671ed5..11f74861a 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.AnyCPU.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.AnyCPU.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.aarch64.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.aarch64.csproj
index 781068a6d..62423943b 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.aarch64.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.aarch64.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.x86_64.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.x86_64.csproj
index 16a2d1157..e70da7134 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.x86_64.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q16.x86_64.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.AnyCPU.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.AnyCPU.csproj
index 663e16c66..2296a3320 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.AnyCPU.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.AnyCPU.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.aarch64.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.aarch64.csproj
index 326ed11e7..e7803db98 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.aarch64.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.aarch64.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.x86_64.csproj b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.x86_64.csproj
index 1943e7b0b..6b38743db 100644
--- a/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.x86_64.csproj
+++ b/extra/admin-api/Spacebar.Cdn.Worker/Spacebar.Cdn.Worker.Q8.x86_64.csproj
@@ -17,8 +17,4 @@
-
-
-
-
diff --git a/extra/admin-api/Spacebar.Cdn/CdnConfiguration.cs b/extra/admin-api/Spacebar.Cdn/CdnConfiguration.cs
index e69de29bb..65ad4710b 100644
--- a/extra/admin-api/Spacebar.Cdn/CdnConfiguration.cs
+++ b/extra/admin-api/Spacebar.Cdn/CdnConfiguration.cs
@@ -0,0 +1,16 @@
+namespace Spacebar.Cdn;
+
+public class SpacebarCdnConfiguration
+{
+ public SpacebarCdnConfiguration(IConfiguration configuration) {
+ configuration.GetRequiredSection("Spacebar").GetRequiredSection("Cdn").Bind(this);
+ }
+
+ // public
+
+}
+
+// public class SpacebarCdnWorkerConfiguration
+// {
+// public
+// }
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.Cdn/Controllers/GetImageController.cs b/extra/admin-api/Spacebar.Cdn/Controllers/GetImageController.cs
index 8e64100a0..c4473932b 100644
--- a/extra/admin-api/Spacebar.Cdn/Controllers/GetImageController.cs
+++ b/extra/admin-api/Spacebar.Cdn/Controllers/GetImageController.cs
@@ -1,56 +1,56 @@
-using ArcaneLibs.Extensions.Streams;
-using Microsoft.AspNetCore.Mvc;
-using Spacebar.AdminApi.TestClient.Services.Services;
-using Spacebar.Cdn.Extensions;
-using Spacebar.Interop.Cdn.Abstractions;
-
-namespace Spacebar.Cdn.Controllers;
-
-[ApiController]
-public class GetImageController(LruFileCache lfc, IFileSource fs, DiscordImageResizeService dirs) : ImageController {
- // [HttpGet("/avatars/{_:required}")]
- [HttpGet("/emojis/{emoji_id:required}.{ext:required}")]
- [HttpGet("/stickers/{sticker_id:required}.{ext:required}")]
- // [HttpGet("/avatars/{user_id:required}/{avatar_hash:required}.{ext:required}")]
- [HttpGet("/banners/{user_id:required}/{user_banner:required}.{ext:required}")]
- public async Task GetImage(string? ext) {
- var originalKey = fs.BaseUrl + Request.Path;
- 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);
- }
-
- // TODO: is message_id required? Can't tell from discord.food: /attachments/{channel_id}/[{message_id]/attachment_id}/{attachment_filename}
- [HttpGet("/attachments/{channel_id:required}/{message_id:required}/{attachment_id:required}/{filename:required}")]
- [HttpGet("/ephemeral-attachments/{application_id:required}/{attachment_id:required}/{attachment_filename:required}")]
- public async Task GetAttachmentImage() {
- // TODO: url signing, file type checks
- return await GetImage("");
- }
-}
\ No newline at end of file
+// using ArcaneLibs.Extensions.Streams;
+// using Microsoft.AspNetCore.Mvc;
+// using Spacebar.AdminApi.TestClient.Services.Services;
+// using Spacebar.Cdn.Extensions;
+// using Spacebar.Interop.Cdn.Abstractions;
+//
+// namespace Spacebar.Cdn.Controllers;
+//
+// [ApiController]
+// public class GetImageController(LruFileCache lfc, IFileSource fs, DiscordImageResizeService dirs) : ImageController {
+// // [HttpGet("/avatars/{_:required}")]
+// [HttpGet("/emojis/{emoji_id:required}.{ext:required}")]
+// [HttpGet("/stickers/{sticker_id:required}.{ext:required}")]
+// // [HttpGet("/avatars/{user_id:required}/{avatar_hash:required}.{ext:required}")]
+// [HttpGet("/banners/{user_id:required}/{user_banner:required}.{ext:required}")]
+// public async Task GetImage(string? ext) {
+// var originalKey = fs.BaseUrl + Request.Path;
+// var cacheKey = Request.Path + Request.QueryString;
+//
+// DiscordImageResizeParams resizeParams = Request.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);
+// }
+//
+// // TODO: is message_id required? Can't tell from discord.food: /attachments/{channel_id}/[{message_id]/attachment_id}/{attachment_filename}
+// [HttpGet("/attachments/{channel_id:required}/{message_id:required}/{attachment_id:required}/{filename:required}")]
+// [HttpGet("/ephemeral-attachments/{application_id:required}/{attachment_id:required}/{attachment_filename:required}")]
+// public async Task GetAttachmentImage() {
+// // TODO: url signing, file type checks
+// return await GetImage("");
+// }
+// }
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs b/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs
index 5d9d0d781..48ae22534 100644
--- a/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs
+++ b/extra/admin-api/Spacebar.Cdn/Controllers/StaticAssetController.cs
@@ -1,66 +1,66 @@
-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;
-
-namespace Spacebar.Cdn.Controllers;
-
-[ApiController]
-public class StaticAssetController(LruFileCache lfc, IFileSource fs, DiscordImageResizeService dirs) : ImageController {
- private static readonly Dictionary defaultAvatarHashMap = new() {
- { "0", "4a8562cf00887030c416d3ec2d46385a" },
- { "1", "9b0bb198936784c45c72833cc426cc55" },
- { "2", "22341bdb500c7b63a93bbce957d1601e" },
- { "3", "d9977836b82058bf2f74eebd50edc095" },
- { "4", "9d6ddb4e4d899a533a8cc617011351c9" },
- { "5", "7213ab6677377974697dfdfbaf5f6a6f" },
- };
-
- private static readonly Dictionary defaultGroupDMAvatarHashMap = new() {
- { "0", "3b70bb66089c60f8be5e214bf8574c9d" },
- { "1", "9581acd31832465bdeaa5385b0e919a3" },
- { "2", "a8a4727cf2dc2939bd3c657fad4463fa" },
- { "3", "2e46fe14586f8e95471c0917f56726b5" },
- { "4", "fac7e78de9753d4a37083bba74c1d9ef" },
- { "5", "4ab900144b0865430dc9be825c838faa" },
- { "6", "1276374a404452756f3c9cc2601508a5" },
- { "7", "904bf9f1b61f53ef4a3b7a893afeabe3" },
- };
-
- // png only
- [HttpGet("/embed/avatars/{userIndex}.{ext}")]
- public async Task 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
+// 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;
+//
+// namespace Spacebar.Cdn.Controllers;
+//
+// [ApiController]
+// public class StaticAssetController(LruFileCache lfc, IFileSource fs, DiscordImageResizeService dirs) : ImageController {
+// private static readonly Dictionary defaultAvatarHashMap = new() {
+// { "0", "4a8562cf00887030c416d3ec2d46385a" },
+// { "1", "9b0bb198936784c45c72833cc426cc55" },
+// { "2", "22341bdb500c7b63a93bbce957d1601e" },
+// { "3", "d9977836b82058bf2f74eebd50edc095" },
+// { "4", "9d6ddb4e4d899a533a8cc617011351c9" },
+// { "5", "7213ab6677377974697dfdfbaf5f6a6f" },
+// };
+//
+// private static readonly Dictionary defaultGroupDMAvatarHashMap = new() {
+// { "0", "3b70bb66089c60f8be5e214bf8574c9d" },
+// { "1", "9581acd31832465bdeaa5385b0e919a3" },
+// { "2", "a8a4727cf2dc2939bd3c657fad4463fa" },
+// { "3", "2e46fe14586f8e95471c0917f56726b5" },
+// { "4", "fac7e78de9753d4a37083bba74c1d9ef" },
+// { "5", "4ab900144b0865430dc9be825c838faa" },
+// { "6", "1276374a404452756f3c9cc2601508a5" },
+// { "7", "904bf9f1b61f53ef4a3b7a893afeabe3" },
+// };
+//
+// // png only
+// [HttpGet("/embed/avatars/{userIndex}.{ext}")]
+// public async Task 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
diff --git a/extra/admin-api/Spacebar.Cdn/Controllers/UserController.cs b/extra/admin-api/Spacebar.Cdn/Controllers/UserController.cs
index 976266098..a6c470369 100644
--- a/extra/admin-api/Spacebar.Cdn/Controllers/UserController.cs
+++ b/extra/admin-api/Spacebar.Cdn/Controllers/UserController.cs
@@ -1,77 +1,77 @@
-using ArcaneLibs.Extensions.Streams;
-using Microsoft.AspNetCore.Mvc;
-using Spacebar.AdminApi.TestClient.Services.Services;
-using Spacebar.Cdn.Extensions;
-using Spacebar.Interop.Cdn.Abstractions;
-
-namespace Spacebar.Cdn.Controllers;
-
-[ApiController]
-public class UserController(LruFileCache lfc, IFileSource fs, DiscordImageResizeService dirs) : ImageController {
- [HttpGet("/avatars/{userId}/{hash}.{ext}")]
- public async Task GetUserAvatar(string userId, string hash, string ext) {
- var originalKey = fs.BaseUrl + Request.Path;
- 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);
- }
- [HttpGet("/banners/{userId}/{hash}.{ext}")]
- public async Task GetUserBanner(string userId, string hash, string ext) {
- var originalKey = fs.BaseUrl + Request.Path;
- 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
+// using ArcaneLibs.Extensions.Streams;
+// using Microsoft.AspNetCore.Mvc;
+// using Spacebar.AdminApi.TestClient.Services.Services;
+// using Spacebar.Cdn.Extensions;
+// using Spacebar.Interop.Cdn.Abstractions;
+//
+// namespace Spacebar.Cdn.Controllers;
+//
+// [ApiController]
+// public class UserController(LruFileCache lfc, IFileSource fs, DiscordImageResizeService dirs) : ImageController {
+// [HttpGet("/avatars/{userId}/{hash}.{ext}")]
+// public async Task GetUserAvatar(string userId, string hash, string ext) {
+// var originalKey = fs.BaseUrl + Request.Path;
+// 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);
+// }
+// [HttpGet("/banners/{userId}/{hash}.{ext}")]
+// public async Task GetUserBanner(string userId, string hash, string ext) {
+// var originalKey = fs.BaseUrl + Request.Path;
+// 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
diff --git a/extra/admin-api/Spacebar.Cdn/Mimes.cs b/extra/admin-api/Spacebar.Cdn/Mimes.cs
index efef1e808..3401ddd0c 100644
--- a/extra/admin-api/Spacebar.Cdn/Mimes.cs
+++ b/extra/admin-api/Spacebar.Cdn/Mimes.cs
@@ -39,7 +39,7 @@ public static class Mimes {
public static string GetMime(MagickFormat fmt) => fmt switch {
MagickFormat.Png => "image/png",
- MagickFormat.Jpeg => "image/jpeg",
+ MagickFormat.Jpeg or MagickFormat.Jpg => "image/jpeg",
MagickFormat.Gif => "image/gif",
MagickFormat.Bmp => "image/bmp",
MagickFormat.Tiff => "image/tiff",
diff --git a/extra/admin-api/Spacebar.Cdn/Program.cs b/extra/admin-api/Spacebar.Cdn/Program.cs
index 61a5c07bd..911c72593 100644
--- a/extra/admin-api/Spacebar.Cdn/Program.cs
+++ b/extra/admin-api/Spacebar.Cdn/Program.cs
@@ -13,8 +13,8 @@ if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("APPSETTINGS_P
// builder.Services.AddSingleton(new ProxyFileSource("http://cdn.old.server.spacebar.chat"));
builder.Services.AddSingleton(new FilesystemFileSource(Environment.GetEnvironmentVariable("STORAGE_PATH") ?? throw new InvalidOperationException("STORAGE_PATH not set!")));
builder.Services.AddSingleton(new LruFileCache(1 * 1024 * 1024 * 1024));
-builder.Services.AddSingleton();
builder.Services.AddSingleton();
+builder.Services.AddSingleton();
builder.Services.AddDbContextPool(options => {
options