From 9678e4e1e87a5d73c47683fe85848888ca8e857b Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 9 Sep 2025 18:05:15 -0700 Subject: refactor: Move Discord APIs to Discord module --- src/discord/verification.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/discord/verification.ts (limited to 'src/discord/verification.ts') diff --git a/src/discord/verification.ts b/src/discord/verification.ts new file mode 100644 index 0000000..c60c70e --- /dev/null +++ b/src/discord/verification.ts @@ -0,0 +1,24 @@ +import { verifyKey } from 'discord-interactions'; +import type { Environment, DiscordInteraction } from './interfaces.ts'; + +export async function verifyDiscordRequest( + request: Request, + environment: Environment, +): Promise<{ isValid: boolean; interaction?: DiscordInteraction }> { + const signature = request.headers.get('x-signature-ed25519'); + const timestamp = request.headers.get('x-signature-timestamp'); + const body = await request.text(); + const isValidRequest = + signature && + timestamp && + (await verifyKey( + body, + signature, + timestamp, + environment.DISCORD_PUBLIC_KEY, + )); + + if (!isValidRequest) return { isValid: false }; + + return { interaction: JSON.parse(body) as DiscordInteraction, isValid: true }; +} -- cgit v1.2.3