summary refs log tree commit diff
path: root/src/routes
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-22 16:48:27 +0100
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-22 16:48:27 +0100
commit0d1f7953057aa04b198e921937bdf6f7dc4a0520 (patch)
treeb1f21536518385c34601ad2aff91925721a573d5 /src/routes
parent:bug: add webhooks to whitelist auth (diff)
downloadserver-0d1f7953057aa04b198e921937bdf6f7dc4a0520.tar.xz
:art: restructed guilds
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/api/v8/guilds/#id/index.ts56
-rw-r--r--src/routes/api/v8/guilds/#id/members.ts16
-rw-r--r--src/routes/api/v8/guilds/index.ts68
3 files changed, 74 insertions, 66 deletions
diff --git a/src/routes/api/v8/guilds/#id/index.ts b/src/routes/api/v8/guilds/#id/index.ts
new file mode 100644
index 00000000..38fbd5f2
--- /dev/null
+++ b/src/routes/api/v8/guilds/#id/index.ts
@@ -0,0 +1,56 @@
+import { Request, Response, Router } from "express";
+import { getPermission, GuildDeleteEvent, GuildModel, MemberModel } from "fosscord-server-util";
+import { HTTPError } from "lambert-server";
+import { GuildUpdateSchema } from "../../../../../schema/Guild";
+import { emitEvent } from "../../../../../util/Event";
+import { check } from "../../../../../util/instanceOf";
+
+const router = Router();
+
+router.get("/", async (req: Request, res: Response) => {
+	const guild_id = BigInt(req.params.id);
+
+	const guild = await GuildModel.findOne({ id: guild_id }).exec();
+	if (!guild) throw new HTTPError("Guild does not exist");
+
+	const member = await MemberModel.findOne({ guild_id: guild_id, id: req.userid }, "id").exec();
+	if (!member) throw new HTTPError("You are not a member of the guild you are trying to access", 401);
+
+	return res.json(guild);
+});
+
+router.patch("/", check(GuildUpdateSchema), async (req: Request, res: Response) => {
+	const body = req.body as GuildUpdateSchema;
+	const guild_id = BigInt(req.params.id);
+
+	const guild = await GuildModel.findOne({ id: guild_id }).exec();
+	if (!guild) throw new HTTPError("This guild does not exist", 404);
+
+	const perms = await getPermission(req.userid, guild_id);
+	if (!perms.has("MANAGE_GUILD")) throw new HTTPError("You do not have the MANAGE_GUILD permission", 401);
+
+	await GuildModel.updateOne({ id: guild_id }, body).exec();
+	return res.status(204);
+});
+
+router.delete("/", async (req: Request, res: Response) => {
+	var guild_id = BigInt(req.params.id);
+
+	const guild = await GuildModel.findOne({ id: BigInt(req.params.id) }, "owner_id").exec();
+	if (!guild) throw new HTTPError("This guild does not exist", 404);
+	if (guild.owner_id !== req.userid) throw new HTTPError("You are not the owner of this guild", 401);
+
+	await emitEvent({
+		event: "GUILD_DELETE",
+		data: {
+			id: guild_id,
+		},
+		guild_id: guild_id,
+	} as GuildDeleteEvent);
+
+	await GuildModel.deleteOne({ id: guild_id }).exec();
+
+	return res.status(204).send();
+});
+
+export default router;
diff --git a/src/routes/api/v8/guilds/#id/members.ts b/src/routes/api/v8/guilds/#id/members.ts
new file mode 100644
index 00000000..68434830
--- /dev/null
+++ b/src/routes/api/v8/guilds/#id/members.ts
@@ -0,0 +1,16 @@
+import { Request, Response, Router } from "express";
+import { GuildModel, MemberModel } from "fosscord-server-util";
+import { HTTPError } from "lambert-server";
+
+const router = Router();
+
+// TODO: needs pagination/only send over websocket
+router.get("/:id/members", async (req: Request, res: Response) => {
+	const guild = await GuildModel.findOne({ id: BigInt(req.params.id) }).exec();
+	if (!guild) throw new HTTPError("Guild not found", 404);
+
+	var members = await MemberModel.find({ guild_id: BigInt(req.params.id) }).exec();
+	return res.json(members);
+});
+
+export default router;
diff --git a/src/routes/api/v8/guilds/index.ts b/src/routes/api/v8/guilds/index.ts
index ae118d51..54b2d2a4 100644
--- a/src/routes/api/v8/guilds/index.ts
+++ b/src/routes/api/v8/guilds/index.ts
@@ -1,49 +1,14 @@
 import { Router, Request, Response } from "express";
-import {
-	GuildDeleteEvent,
-	RoleModel,
-	GuildModel,
-	MemberModel,
-	Snowflake,
-	getPermission,
-	Guild,
-} from "fosscord-server-util";
+import { RoleModel, GuildModel, Snowflake, Guild } from "fosscord-server-util";
 import { HTTPError } from "lambert-server";
 import { check } from "./../../../../util/instanceOf";
-import { GuildCreateSchema, GuildUpdateSchema } from "../../../../schema/Guild";
-import { emitEvent } from "../../../../util/Event";
+import { GuildCreateSchema } from "../../../../schema/Guild";
 import Config from "../../../../util/Config";
 import { getPublicUser } from "../../../../util/User";
 import { addMember } from "../../../../util/Member";
 
 const router: Router = Router();
 
-router.get("/:id", async (req: Request, res: Response) => {
-	const guild_id = BigInt(req.params.id);
-
-	const guild = await GuildModel.findOne({ id: guild_id }).exec();
-	if (!guild) throw new HTTPError("Guild does not exist");
-
-	const member = await MemberModel.findOne({ guild_id: guild_id, id: req.userid }, "id").exec();
-	if (!member) throw new HTTPError("You are not a member of the guild you are trying to access", 401);
-
-	return res.json(guild);
-});
-
-router.patch("/:id", check(GuildUpdateSchema), async (req: Request, res: Response) => {
-	const body = req.body as GuildUpdateSchema;
-	const guild_id = BigInt(req.params.id);
-
-	const guild = await GuildModel.findOne({ id: guild_id }).exec();
-	if (!guild) throw new HTTPError("This guild does not exist", 404);
-
-	const perms = await getPermission(req.userid, guild_id);
-	if (!perms.has("MANAGE_GUILD")) throw new HTTPError("You do not have the MANAGE_GUILD permission", 401);
-
-	await GuildModel.updateOne({ id: guild_id }, body).exec();
-	return res.status(204);
-});
-
 router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) => {
 	const body = req.body as GuildCreateSchema;
 
@@ -113,33 +78,4 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
 	res.status(201).json({ id: guild.id });
 });
 
-router.delete("/:id", async (req: Request, res: Response) => {
-	var guild_id = BigInt(req.params.id);
-
-	const guild = await GuildModel.findOne({ id: BigInt(req.params.id) }, "owner_id").exec();
-	if (!guild) throw new HTTPError("This guild does not exist", 404);
-	if (guild.owner_id !== req.userid) throw new HTTPError("You are not the owner of this guild", 401);
-
-	await emitEvent({
-		event: "GUILD_DELETE",
-		data: {
-			id: guild_id,
-		},
-		guild_id: guild_id,
-	} as GuildDeleteEvent);
-
-	await GuildModel.deleteOne({ id: guild_id }).exec();
-
-	return res.status(204).send();
-});
-
-// TODO: needs pagination/only send over websocket
-router.get("/:id/members", async (req: Request, res: Response) => {
-	const guild = await GuildModel.findOne({ id: BigInt(req.params.id) }).exec();
-	if (!guild) throw new HTTPError("Guild not found", 404);
-
-	var members = await MemberModel.find({ guild_id: BigInt(req.params.id) }).exec();
-	return res.json(members);
-});
-
 export default router;