File size: 768 Bytes
634e30a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 type { IncomingMessage, ServerResponse } from "node:http";
import { verifyTokenAndRateLimit } from "./verifyTokenAndRateLimit.ts";

/** Handles token verification and sends appropriate error responses if needed. */
export async function handleTokenVerification(
  token: string | null,
  response: ServerResponse,
  request?: IncomingMessage,
): Promise<{ shouldContinue: boolean }> {
  const { isAuthorized, statusCode, error } = await verifyTokenAndRateLimit(
    token,
    request,
  );

  if (!isAuthorized && statusCode && error) {
    response.statusCode = statusCode;
    response.setHeader("Content-Type", "application/json");
    response.end(JSON.stringify({ error }));
    return { shouldContinue: false };
  }

  return { shouldContinue: true };
}