using MaBibli.Api.Services.Couvertures; namespace MaBibli.Api.Endpoints; public static class CouverturesEndpoints { /// /// Relais d'images de couverture, pour la mise en cache hors-ligne. /// /// /// ⚠️ Tout refus répond 404, qu'il s'agisse d'une URL inconnue de la base, d'un schéma /// interdit, d'une adresse non routable ou d'un hôte injoignable. Distinguer ces cas ferait du /// point d'entrée un oracle : on y lirait quelles URL l'application connaît, et quelles /// adresses répondent depuis le serveur. Voir . /// public static IEndpointRouteBuilder MapCouverturesEndpoints(this IEndpointRouteBuilder routes) { routes.MapGet("/api/couvertures", async ( string? url, IServiceCouvertures service, CancellationToken ct) => { var resultat = await service.ObtenirAsync(url, ct); return resultat.Trouvee ? Results.File(resultat.Octets!, resultat.TypeContenu!) : Results.NotFound(); }) .WithName("RelayerCouverture") .WithTags("Couvertures") .WithSummary("Relaie une couverture déjà enregistrée, en même origine.") // ⚠️ Pas de `contentType` ici : il varie avec l'image (image/jpeg, image/png…), et // l'annotation OpenAPI REFUSE les jokers — « image/* » fait échouer le démarrage du // serveur, pas la compilation. Constaté en exécution. .Produces(StatusCodes.Status200OK) .Produces(StatusCodes.Status404NotFound); return routes; } }