summary refs log tree commit diff
path: root/src/api/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/util')
-rw-r--r--src/api/util/handlers/Webhook.ts61
1 files changed, 17 insertions, 44 deletions
diff --git a/src/api/util/handlers/Webhook.ts b/src/api/util/handlers/Webhook.ts

index e9e0bf6c..3980b47e 100644 --- a/src/api/util/handlers/Webhook.ts +++ b/src/api/util/handlers/Webhook.ts
@@ -6,44 +6,17 @@ import { MoreThan } from "typeorm"; import { WebhookExecuteSchema } from "@spacebar/schemas"; export const executeWebhook = async (req: Request, res: Response) => { - const { wait } = req.query; - - if (!wait) { - res.status(204).send(); - } - - const { webhook_id, token } = req.params; - const body = req.body as WebhookExecuteSchema; - const attachments: Attachment[] = []; - // ensure one of content, embeds, components, or file is present - if (!body.content && !body.embeds && !body.components && !body.file && !body.attachments) { - if (wait) { - throw DiscordApiErrors.CANNOT_SEND_EMPTY_MESSAGE; - } else { - return; - } - } - - // block username from containing certain words - // TODO: configurable additions if (body.username) { ValidateName(body.username); } - // block username from being certain words - // TODO: configurable additions - const blockedEquals = ["everyone", "here"]; - for (const word of blockedEquals) { - if (body.username?.toLowerCase() === word) { - if (wait) - res.status(400).json({ - username: [`Username cannot be "${word}"`], - }); - return; - } + // ensure one of content, embeds, components, or file is present + if (!body.content && !body.embeds && !body.components && !body.file && !body.attachments) { + throw DiscordApiErrors.CANNOT_SEND_EMPTY_MESSAGE; } + const { webhook_id, token } = req.params; const webhook = await Webhook.findOne({ where: { @@ -53,24 +26,24 @@ export const executeWebhook = async (req: Request, res: Response) => { }); if (!webhook) { - if (wait) { - throw DiscordApiErrors.UNKNOWN_WEBHOOK; - } else { - return; - } + throw DiscordApiErrors.UNKNOWN_WEBHOOK; } - if (!webhook.channel.isWritable()) { - if (wait) { - throw new HTTPError(`Cannot send messages to channel of type ${webhook.channel.type}`, 400); - } else { - return; - } + if (webhook.token !== token) { + throw DiscordApiErrors.INVALID_WEBHOOK_TOKEN_PROVIDED; } - if (webhook.token !== token) { + const { wait } = req.query; + + if (!wait) { + res.status(204).send(); + } + + const attachments: Attachment[] = []; + + if (!webhook.channel.isWritable()) { if (wait) { - throw DiscordApiErrors.INVALID_WEBHOOK_TOKEN_PROVIDED; + throw new HTTPError(`Cannot send messages to channel of type ${webhook.channel.type}`, 400); } else { return; }