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; } }