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/schema/Guild.ts | 2 +- src/schema/Message.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/schema') diff --git a/src/schema/Guild.ts b/src/schema/Guild.ts index 6527f35d..2b792db0 100644 --- a/src/schema/Guild.ts +++ b/src/schema/Guild.ts @@ -1,4 +1,4 @@ -import { ChannelSchema, GuildChannel } from "fosscord-server-util"; +import { ChannelSchema, GuildChannel } from "@fosscord/server-util"; import { Length } from "../util/instanceOf"; export const GuildCreateSchema = { diff --git a/src/schema/Message.ts b/src/schema/Message.ts index c0e2315a..9b62edcf 100644 --- a/src/schema/Message.ts +++ b/src/schema/Message.ts @@ -1,4 +1,4 @@ -import { Embed, EmbedImage } from "fosscord-server-util"; +import { Embed, EmbedImage } from "@fosscord/server-util"; import { Length } from "../util/instanceOf"; export const MessageCreateSchema = { -- cgit 1.5.1 From e3815e5c3e2acf8f31b177c889e2a77ca80bd165 Mon Sep 17 00:00:00 2001 From: Intevel ツ <59223342+Intevel@users.noreply.github.com> Date: Sat, 24 Apr 2021 09:38:18 +0200 Subject: lol --- src/routes/users/#id/index.ts | 5 +++-- src/schema/User.ts | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 src/schema/User.ts (limited to 'src/schema') diff --git a/src/routes/users/#id/index.ts b/src/routes/users/#id/index.ts index 3cbeb463..d5f3b788 100644 --- a/src/routes/users/#id/index.ts +++ b/src/routes/users/#id/index.ts @@ -1,7 +1,9 @@ import { Router, Request, Response } from "express"; -import { UserModel} from "@fosscord/server-util"; +import { UserModel, toObject } from "@fosscord/server-util"; import { getPublicUser } from "../../../util/User"; import { HTTPError } from "lambert-server"; +import { UserUpdateSchema } from "../../../schema/User"; +import { check } from "../../../util/instanceOf"; const router: Router = Router(); @@ -14,5 +16,4 @@ router.get("/", async (req: Request, res: Response) => { }); - export default router; diff --git a/src/schema/User.ts b/src/schema/User.ts new file mode 100644 index 00000000..2b74a433 --- /dev/null +++ b/src/schema/User.ts @@ -0,0 +1,43 @@ +export const UserUpdateSchema = { + id: String, + username: String, + discriminator: String, + avatar: String || null, + $phone: String, + desktop: Boolean, + mobile: Boolean, + premium: Boolean, + premium_type: Number, + bot: Boolean, + system: Boolean, + nsfw_allowed: Boolean, + mfa_enabled: Boolean, + created_at: Date, + verified: Boolean, + $email: String, + flags: BigInt, + public_flags: BigInt, + $guilds: [String], +}; + +export interface UserUpdateSchema { + id: string; + username: string; + discriminator: string; + avatar: string | null; + phone?: string; + desktop: boolean; + mobile: boolean; + premium: boolean; + premium_type: number; + bot: boolean; + system: boolean; + nsfw_allowed: boolean; + mfa_enabled: boolean; + created_at: Date; + verified: boolean; + email?: string; + flags: bigint; + public_flags: bigint; + guilds: string[]; +} -- 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/schema') 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