Switch to nuxt assets for emojis (#311)

* switch to nuxt assets for emojis

* add auth to emoji endpoint

* fix cache control header

* fix type error
This commit is contained in:
Husky
2026-01-13 22:49:58 -05:00
committed by GitHub
parent 63ac2b8ffc
commit 1eaec4c3e8
8 changed files with 67 additions and 119 deletions

View File

@@ -0,0 +1,39 @@
import aclManager from "~/server/internal/acls";
export default defineEventHandler(async (h3) => {
const allowed = await aclManager.hasACL(h3, [
"system:setup",
"user:emoji:read",
]);
if (!allowed)
throw createError({
statusCode: 403,
statusMessage: "Requires authentication",
});
const codepoint = getRouterParam(h3, "codepoint");
if (!codepoint) {
throw createError({
statusCode: 400,
statusMessage: "Missing codepoint parameter",
});
}
// Get the emoji SVG from server assets
const asset = await useStorage("assets:twemoji").getItemRaw(
`${codepoint}.svg`,
);
if (!asset) {
throw createError({
statusCode: 404,
statusMessage: "Emoji not found",
});
}
// Set proper content type for SVG
setResponseHeader(h3, "Content-Type", "image/svg+xml");
setResponseHeader(h3, "Cache-Control", "private, max-age=31536000");
return asset;
});