( request: NextRequest, endpoint: V1Endpoint )
| 114 | * Returns NextResponse on failure, AuthorizedRequest on success. |
| 115 | */ |
| 116 | export async function authenticateRequest( |
| 117 | request: NextRequest, |
| 118 | endpoint: V1Endpoint |
| 119 | ): Promise<AuthorizedRequest | NextResponse> { |
| 120 | const requestId = generateRequestId() |
| 121 | const rateLimit = await checkRateLimit(request, endpoint) |
| 122 | if (!rateLimit.allowed) { |
| 123 | return createRateLimitResponse(rateLimit) |
| 124 | } |
| 125 | return { requestId, userId: rateLimit.userId!, rateLimit } |
| 126 | } |
| 127 | |
| 128 | export function createRateLimitResponse(result: RateLimitResult): NextResponse { |
| 129 | const headers = { |
no test coverage detected