From b40d6b825b4a2074e5eb0f6f20f0388abb36dd89 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Thu, 22 Apr 2021 23:37:07 +0200 Subject: npm i @fosscord/server-util --- src/routes/users/@me/guilds.ts | 2 +- src/routes/users/@me/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/routes/users/@me') diff --git a/src/routes/users/@me/guilds.ts b/src/routes/users/@me/guilds.ts index d0fbaa3e..5042c17c 100644 --- a/src/routes/users/@me/guilds.ts +++ b/src/routes/users/@me/guilds.ts @@ -1,5 +1,5 @@ import { Router, Request, Response } from "express"; -import { GuildModel, MemberModel, UserModel, GuildDeleteEvent, GuildMemberRemoveEvent, toObject } from "fosscord-server-util"; +import { GuildModel, MemberModel, UserModel, GuildDeleteEvent, GuildMemberRemoveEvent, toObject } from "@fosscord/server-util"; import { HTTPError } from "lambert-server"; import { emitEvent } from "../../../util/Event"; import { getPublicUser } from "../../../util/User"; diff --git a/src/routes/users/@me/index.ts b/src/routes/users/@me/index.ts index 32877dcc..22d4cf3b 100644 --- a/src/routes/users/@me/index.ts +++ b/src/routes/users/@me/index.ts @@ -1,5 +1,5 @@ import { Router, Request, Response } from "express"; -import { UserModel } from "fosscord-server-util"; +import { UserModel } from "@fosscord/server-util"; import { HTTPError } from "lambert-server"; const router: Router = Router(); -- cgit 1.5.1 From ca02ca690b33731e2f1f3ca496bbfcf2d7378ac4 Mon Sep 17 00:00:00 2001 From: Intevel ツ <59223342+Intevel@users.noreply.github.com> Date: Sat, 24 Apr 2021 09:58:38 +0200 Subject: get /users/@me/channels --- src/routes/users/@me/channels.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/routes/users/@me/channels.ts (limited to 'src/routes/users/@me') diff --git a/src/routes/users/@me/channels.ts b/src/routes/users/@me/channels.ts new file mode 100644 index 00000000..8f2cb74d --- /dev/null +++ b/src/routes/users/@me/channels.ts @@ -0,0 +1,20 @@ +import { Router, Request, Response } from "express"; +import { ChannelModel, MemberModel, UserModel, GuildDeleteEvent, GuildMemberRemoveEvent, toObject } from "@fosscord/server-util"; +import { HTTPError } from "lambert-server"; +import { emitEvent } from "../../../util/Event"; +import { getPublicUser } from "../../../util/User"; + +const router: Router = Router(); + +router.get("/", async (req: Request, res: Response) => { + const user = await UserModel.findOne({ id: req.user_id }, { guilds: true }).exec(); + if (!user) throw new HTTPError("User not found", 404); + + var testID = "829044530203328513"; //FOR TEST + + var channels = await ChannelModel.find({ recipients: req.user_id }).exec(); + + res.json(toObject(channels)); +}); + +export default router; \ No newline at end of file -- cgit 1.5.1 From 75461b9f6ed940d744c0036227b0f8ce943a26ca Mon Sep 17 00:00:00 2001 From: Intevel ツ <59223342+Intevel@users.noreply.github.com> Date: Sat, 24 Apr 2021 10:21:40 +0200 Subject: POST /users/@me/channels --- src/routes/users/@me/channels.ts | 73 ++++++++++++++++++++++++++++++++++++---- src/schema/Channel.ts | 19 +++++++++++ 2 files changed, 85 insertions(+), 7 deletions(-) (limited to 'src/routes/users/@me') diff --git a/src/routes/users/@me/channels.ts b/src/routes/users/@me/channels.ts index 8f2cb74d..b5a53be7 100644 --- a/src/routes/users/@me/channels.ts +++ b/src/routes/users/@me/channels.ts @@ -1,20 +1,79 @@ -import { Router, Request, Response } from "express"; -import { ChannelModel, MemberModel, UserModel, GuildDeleteEvent, GuildMemberRemoveEvent, toObject } from "@fosscord/server-util"; -import { HTTPError } from "lambert-server"; -import { emitEvent } from "../../../util/Event"; -import { getPublicUser } from "../../../util/User"; +import { + Router, + Request, + Response +} from "express"; +import { + ChannelModel, + ChannelCreateEvent, + DMChannel, + UserModel, + toObject, + ChannelType, + Snowflake +} from "@fosscord/server-util"; +import { + HTTPError +} from "lambert-server"; +import { + emitEvent +} from "../../../util/Event"; +import { + getPublicUser +} from "../../../util/User"; +import { + DmChannelCreateSchema +} from "../../../schema/Channel"; +import { + check +} from "../../../util/instanceOf"; const router: Router = Router(); router.get("/", async (req: Request, res: Response) => { - const user = await UserModel.findOne({ id: req.user_id }, { guilds: true }).exec(); + const user = await UserModel.findOne({ + id: req.user_id + }, { + guilds: true + }).exec(); if (!user) throw new HTTPError("User not found", 404); var testID = "829044530203328513"; //FOR TEST - var channels = await ChannelModel.find({ recipients: req.user_id }).exec(); + var channels = await ChannelModel.find({ + recipients: req.user_id, + type: 1 + }).exec(); res.json(toObject(channels)); }); +router.post("/", check(DmChannelCreateSchema), async (req, res) => { + const body = req.body as DmChannelCreateSchema; + switch (body.type) { + case ChannelType.GUILD_CATEGORY: + case ChannelType.GUILD_TEXT: + case ChannelType.GUILD_VOICE: + throw new HTTPError("You can't create a dm channel in a guild"); + // TODO: + case ChannelType.GUILD_STORE: + throw new HTTPError("Not yet supported"); + case ChannelType.GUILD_NEWS: + // TODO: check if guild is community server + } + + const channel = { + ...body, + owner_id: req.user_id, + id: Snowflake.generate(), + created_at: new Date(), + }; + await new ChannelModel(channel).save(); + + /*Event({ event: "CHANNEL_CREATE", data: channel } as ChannelCreateEvent);*/ + + + res.json(channel); +}); + export default router; \ No newline at end of file diff --git a/src/schema/Channel.ts b/src/schema/Channel.ts index 0fafc54d..3a22872a 100644 --- a/src/schema/Channel.ts +++ b/src/schema/Channel.ts @@ -1,3 +1,4 @@ +import { ChannelType } from "@fosscord/server-util"; import { Length } from "../util/instanceOf"; export const ChannelModifySchema = { @@ -20,6 +21,24 @@ export const ChannelModifySchema = { $nsfw: Boolean, }; +export const DmChannelCreateSchema = { + owner_id: String, + $id: String, + $created_at: Date, + name: String, + type: Number, + recipients: [String] +} + +export interface DmChannelCreateSchema { + owner_id: String; + id?: String; + created_at?: Date; + name: String; + type: Number; + recipients: String[]; +} + export interface ChannelModifySchema { name: string; type: number; -- cgit 1.5.1 From f41f2cb251132ff5d2915cf98a4411f1fb0d2942 Mon Sep 17 00:00:00 2001 From: Intevel ツ <59223342+Intevel@users.noreply.github.com> Date: Sat, 24 Apr 2021 10:28:25 +0200 Subject: Update channels.ts --- src/routes/users/@me/channels.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'src/routes/users/@me') diff --git a/src/routes/users/@me/channels.ts b/src/routes/users/@me/channels.ts index b5a53be7..45371b34 100644 --- a/src/routes/users/@me/channels.ts +++ b/src/routes/users/@me/channels.ts @@ -50,22 +50,12 @@ router.get("/", async (req: Request, res: Response) => { router.post("/", check(DmChannelCreateSchema), async (req, res) => { const body = req.body as DmChannelCreateSchema; - switch (body.type) { - case ChannelType.GUILD_CATEGORY: - case ChannelType.GUILD_TEXT: - case ChannelType.GUILD_VOICE: - throw new HTTPError("You can't create a dm channel in a guild"); - // TODO: - case ChannelType.GUILD_STORE: - throw new HTTPError("Not yet supported"); - case ChannelType.GUILD_NEWS: - // TODO: check if guild is community server - } const channel = { ...body, owner_id: req.user_id, id: Snowflake.generate(), + type: ChannelType.DM, created_at: new Date(), }; await new ChannelModel(channel).save(); -- cgit 1.5.1