Files
flashcards/src/lib/http.ts
T
devcodetools 1b8aac89f9 test(api): couvrir les routes CRUD, random, thèmes et les helpers HTTP
Ajoute les tests des routes /api/cards, /api/cards/[id], /api/cards/random
et /api/cards/themes, ainsi que les tests des helpers http (handleError,
parseJsonBody) et de la factory getCardService. Corrige le formatage des
fichiers sources embarqués non formatés par les commits précédents.
2026-09-21 18:22:06 +02:00

32 lines
916 B
TypeScript

import { NextResponse, type NextRequest } from 'next/server'
import { ZodError } from 'zod'
import { AppError, ValidationError } from '@/domain/errors'
export function handleError(error: unknown): NextResponse {
if (error instanceof ZodError) {
return NextResponse.json(
{ error: 'ValidationError', message: 'Payload invalide', issues: error.flatten() },
{ status: 400 },
)
}
if (error instanceof AppError) {
return NextResponse.json(
{ error: error.name, message: error.message },
{ status: error.status },
)
}
console.error(error)
return NextResponse.json(
{ error: 'InternalServerError', message: 'Erreur interne' },
{ status: 500 },
)
}
export async function parseJsonBody(request: NextRequest): Promise<unknown> {
try {
return await request.json()
} catch {
throw new ValidationError('Corps de requête invalide (JSON attendu)')
}
}