using MaBibli.Api.Services.Isbn;
using MaBibli.Shared.Dtos;
namespace MaBibli.Api.Endpoints;
public static class IsbnEndpoints
{
///
/// Expose le lookup ISBN. Aucune écriture en base : cet endpoint pré-remplit un formulaire,
/// il n'enregistre rien.
///
public static IEndpointRouteBuilder MapIsbnEndpoints(this IEndpointRouteBuilder routes)
{
var groupe = routes.MapGroup("/api/isbn").WithTags("ISBN");
groupe.MapGet("/{isbn}", async (
string isbn,
IIsbnLookupService service,
CancellationToken ct) =>
{
var resultat = await service.RechercherAsync(isbn, ct);
return resultat is null
? Results.BadRequest(new { erreur = $"« {isbn} » n'est pas un ISBN valide." })
: Results.Ok(resultat);
})
.WithName("RechercherIsbn")
.WithSummary("Cherche les notices correspondant à un ISBN (cascade BnF → OpenLibrary).")
.WithDescription(
"Renvoie TOUS les candidats trouvés (jusqu'à 5) : un même ISBN peut correspondre à "
+ "plusieurs rééditions. Le choix revient à l'utilisateur.")
.Produces()
.Produces(StatusCodes.Status400BadRequest);
return routes;
}
}