mirror of
https://github.com/versia-pub/server.git
synced 2026-03-13 05:49:16 +01:00
fix(api): 🐛 Fetch media content-type from data, instead of doing naive guesses
This commit is contained in:
parent
6f67881d96
commit
4fdb96930f
8 changed files with 111 additions and 23 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import { apiRoute, applyConfig, auth, jsonOrForm } from "@/api";
|
||||
import { mimeLookup } from "@/content_types";
|
||||
import { mergeAndDeduplicate } from "@/lib";
|
||||
import { sanitizedHtmlStrip } from "@/sanitization";
|
||||
import { createRoute } from "@hono/zod-openapi";
|
||||
|
|
@ -267,21 +268,37 @@ export default apiRoute((app) =>
|
|||
|
||||
if (avatar) {
|
||||
if (avatar instanceof File) {
|
||||
const { path } = await mediaManager.addFile(avatar);
|
||||
const { path, uploadedFile } =
|
||||
await mediaManager.addFile(avatar);
|
||||
const contentType = uploadedFile.type;
|
||||
|
||||
self.avatar = Attachment.getUrl(path);
|
||||
self.source.avatar = {
|
||||
content_type: contentType,
|
||||
};
|
||||
} else {
|
||||
self.avatar = avatar;
|
||||
self.source.avatar = {
|
||||
content_type: await mimeLookup(avatar),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (header) {
|
||||
if (header instanceof File) {
|
||||
const { path } = await mediaManager.addFile(header);
|
||||
const { path, uploadedFile } =
|
||||
await mediaManager.addFile(header);
|
||||
const contentType = uploadedFile.type;
|
||||
|
||||
self.header = Attachment.getUrl(path);
|
||||
self.source.header = {
|
||||
content_type: contentType,
|
||||
};
|
||||
} else {
|
||||
self.header = header;
|
||||
self.source.header = {
|
||||
content_type: await mimeLookup(header),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,8 +61,12 @@ export default apiRoute((app) =>
|
|||
name: "Versia Server",
|
||||
version: pkg.version,
|
||||
},
|
||||
banner: urlToContentFormat(config.instance.banner),
|
||||
logo: urlToContentFormat(config.instance.logo),
|
||||
banner: config.instance.banner
|
||||
? urlToContentFormat(config.instance.banner)
|
||||
: undefined,
|
||||
logo: config.instance.logo
|
||||
? urlToContentFormat(config.instance.logo)
|
||||
: undefined,
|
||||
shared_inbox: new URL(
|
||||
"/inbox",
|
||||
config.http.base_url,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import { WebFinger } from "@versia/federation/schemas";
|
|||
import { User } from "@versia/kit/db";
|
||||
import { Users } from "@versia/kit/tables";
|
||||
import { and, eq, isNull } from "drizzle-orm";
|
||||
import { lookup } from "mime-types";
|
||||
import { z } from "zod";
|
||||
import { config } from "~/packages/config-manager";
|
||||
import { ErrorSchema } from "~/types/api";
|
||||
|
|
@ -137,9 +136,8 @@ export default apiRoute((app) =>
|
|||
},
|
||||
{
|
||||
rel: "avatar",
|
||||
// TODO: don't... don't use the mime type from the file extension
|
||||
type:
|
||||
lookup(user.getAvatarUrl(config)) ||
|
||||
user.data.source.avatar?.content_type ||
|
||||
"application/octet-stream",
|
||||
href: user.getAvatarUrl(config),
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue