diff options
author | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-10-14 19:46:45 +0200 |
---|---|---|
committer | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-10-14 19:46:45 +0200 |
commit | 36a29054ec1be722dc576b40c76f191efce97a71 (patch) | |
tree | c0d1f2471ab34b06f1b95f0378f1639e9b1a8f98 /api | |
parent | :bug: fix migration + autojoin (diff) | |
download | server-36a29054ec1be722dc576b40c76f191efce97a71.tar.xz |
:sparkles: stickers
Diffstat (limited to 'api')
-rw-r--r-- | api/src/routes/guilds/#guild_id/stickers.ts | 74 | ||||
-rw-r--r-- | api/src/routes/stickers/#sticker_id/index.ts | 12 |
2 files changed, 86 insertions, 0 deletions
diff --git a/api/src/routes/guilds/#guild_id/stickers.ts b/api/src/routes/guilds/#guild_id/stickers.ts new file mode 100644 index 00000000..c122b72d --- /dev/null +++ b/api/src/routes/guilds/#guild_id/stickers.ts @@ -0,0 +1,74 @@ +import { Member, Sticker } from "@fosscord/util"; +import { Router, Request, Response } from "express"; +import { route } from "@fosscord/api"; +import multer from "multer"; +const router = Router(); + +router.get("/", route({}), async (req: Request, res: Response) => { + const { guild_id } = req.params; + await Member.IsInGuildOrFail(req.user_id, guild_id); + + res.json(await Sticker.find({ guild_id })); +}); + +const bodyParser = multer({ + limits: { + fileSize: 1024 * 1024 * 100, + fields: 10, + files: 1 + }, + storage: multer.memoryStorage() +}).single("file"); + +router.post("/", bodyParser, route({ permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => { + const { guild_id } = req.params; + await Member.IsInGuildOrFail(req.user_id, guild_id); + + res.json(await Sticker.find({ guild_id })); +}); + +router.get("/:sticker_id", route({}), async (req: Request, res: Response) => { + const { guild_id, sticker_id } = req.params; + await Member.IsInGuildOrFail(req.user_id, guild_id); + + res.json(await Sticker.findOneOrFail({ guild_id, id: sticker_id })); +}); + +export interface ModifyGuildStickerSchema { + /** + * @minLength 2 + * @maxLength 30 + */ + name: string; + /** + * @minLength 2 + * @maxLength 100 + */ + description?: string; + /** + * @maxLength 200 + */ + tags: string; +} + +router.patch( + "/:sticker_id", + route({ body: "ModifyGuildStickerSchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }), + async (req: Request, res: Response) => { + const { guild_id, sticker_id } = req.params; + const body = req.body as ModifyGuildStickerSchema; + + const sticker = await new Sticker({ ...body, guild_id, id: sticker_id }).save(); + return res.json(sticker); + } +); + +router.delete("/:sticker_id", route({ permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => { + const { guild_id, sticker_id } = req.params; + + await Sticker.delete({ guild_id, id: sticker_id }); + + return res.sendStatus(204); +}); + +export default router; diff --git a/api/src/routes/stickers/#sticker_id/index.ts b/api/src/routes/stickers/#sticker_id/index.ts new file mode 100644 index 00000000..293ca089 --- /dev/null +++ b/api/src/routes/stickers/#sticker_id/index.ts @@ -0,0 +1,12 @@ +import { Sticker } from "@fosscord/util"; +import { Router, Request, Response } from "express"; +import { route } from "@fosscord/api"; +const router = Router(); + +router.get("/", route({}), async (req: Request, res: Response) => { + const { sticker_id } = req.params; + + res.json(await Sticker.find({ id: sticker_id })); +}); + +export default router; |