blob: 89d26db6c0790889a903466e8a9d683ceb13973c (
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 const verifyDiscordRequest = async (
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 };
};
|