diff --git a/src/routes/guilds/#guild_id/index.ts b/src/routes/guilds/#guild_id/index.ts
index 051b44c4..a2dfeeda 100644
--- a/src/routes/guilds/#guild_id/index.ts
+++ b/src/routes/guilds/#guild_id/index.ts
@@ -17,7 +17,7 @@ import { HTTPError } from "lambert-server";
import { GuildUpdateSchema } from "../../../schema/Guild";
import { emitEvent } from "../../../util/Event";
import { check } from "../../../util/instanceOf";
-import { uploadFile } from "../../../util/cdn";
+import { handleFile } from "../../../util/cdn";
import "missing-native-js-functions";
const router = Router();
@@ -43,31 +43,8 @@ router.patch("/", check(GuildUpdateSchema), async (req: Request, res: Response)
const perms = await getPermission(req.user_id, guild_id);
perms.hasThrow("MANAGE_GUILD");
- if (body.icon && body.icon.startsWith('data')) {
- try {
- const mimetype = body.icon.split(":")[1].split(";")[0];
- const buffer = Buffer.from(body.icon.split(",")[1], "base64");
-
- // @ts-ignore
- const { id } = await uploadFile(`/icons/${guild_id}`, { buffer, mimetype, originalname: "icon" });
- body.icon = id;
- } catch (error) {
- throw new HTTPError("Invalid icon");
- }
- }
-
- if (body.banner && body.banner.startsWith('data')) {
- try {
- const mimetype = body.banner.split(":")[1].split(";")[0];
- const buffer = Buffer.from(body.banner.split(",")[1], "base64");
-
- // @ts-ignore
- const { id } = await uploadFile(`/banners/${guild_id}`, { buffer, mimetype, originalname: "banner" });
- body.banner = id;
- } catch (error) {
- throw new HTTPError("Invalid banner");
- }
- }
+ body.icon = await handleFile("icons", body.icon);
+ body.banner = await handleFile("banners", body.banner);
const guild = await GuildModel.findOneAndUpdate({ id: guild_id }, body)
.populate({ path: "joined_at", match: { id: req.user_id } })
diff --git a/src/routes/users/@me/index.ts b/src/routes/users/@me/index.ts
index 68196afe..25a05da3 100644
--- a/src/routes/users/@me/index.ts
+++ b/src/routes/users/@me/index.ts
@@ -4,7 +4,7 @@ import { HTTPError } from "lambert-server";
import { getPublicUser } from "../../../util/User";
import { UserModifySchema } from "../../../schema/User";
import { check } from "../../../util/instanceOf";
-import { uploadFile } from "../../../util/cdn";
+import { handleFile } from "../../../util/cdn";
const router: Router = Router();
@@ -14,19 +14,7 @@ router.get("/", async (req: Request, res: Response) => {
router.patch("/", check(UserModifySchema), async (req: Request, res: Response) => {
const body = req.body as UserModifySchema;
-
- if (body.avatar) {
- try {
- const mimetype = body.avatar.split(":")[1].split(";")[0];
- const buffer = Buffer.from(body.avatar.split(",")[1], "base64");
-
- // @ts-ignore
- const { id } = await uploadFile(`/avatars/${req.user_id}`, { buffer, mimetype, originalname: "avatar" });
- body.avatar = id;
- } catch (error) {
- throw new HTTPError("Invalid avatar");
- }
- }
+ body.avatar = await handleFile(body.avatar as string);
const user = await UserModel.findOneAndUpdate({ id: req.user_id }, body, { projection: PublicUserProjection }).exec();
// TODO: dispatch user update event
|