blob: c60c70e533377461cab831cbda3a779ec9b31738 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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 };
}
|