MaBibli 1.0.0
Gestion de bibliothèque personnelle auto-hébergée : catalogue, prêts, scan de code-barres, consultation hors-ligne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
using System.Reflection;
|
||||
using MaBibli.Shared.Dtos;
|
||||
|
||||
namespace MaBibli.Api.Endpoints;
|
||||
|
||||
/// <summary>
|
||||
/// Ce que l'application sait d'elle-même : sa version publiée et sa date de build.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// C'est le <b>serveur</b> qui répond, et non le client Blazor, bien que les deux soient
|
||||
/// compilés du même coup : lire ses propres attributs depuis le WebAssembly dépendrait de ce que
|
||||
/// le trimmer veut bien conserver, alors qu'ici la lecture est certaine. La page « À propos »
|
||||
/// affiche donc la version du binaire réellement déployé — ce qu'on veut savoir en diagnostiquant
|
||||
/// un appareil.
|
||||
/// </remarks>
|
||||
public static class VersionEndpoints
|
||||
{
|
||||
// Lue une fois : les attributs d'un assembly ne changent pas en cours d'exécution.
|
||||
private static readonly VersionApplication Version = Lire(typeof(VersionEndpoints).Assembly);
|
||||
|
||||
public static IEndpointRouteBuilder MapVersionEndpoints(this IEndpointRouteBuilder routes)
|
||||
{
|
||||
routes.MapGet("/api/version", () => Results.Ok(Version))
|
||||
.WithName("VersionApplication")
|
||||
.WithTags("Version")
|
||||
.WithSummary("Version publiée et date de build, ou « rien » pour un binaire non publié.")
|
||||
.Produces<VersionApplication>();
|
||||
|
||||
return routes;
|
||||
}
|
||||
|
||||
/// <summary>Extrait les deux valeurs de l'assembly, sans rien interpréter lui-même.</summary>
|
||||
public static VersionApplication Lire(Assembly assembly) =>
|
||||
VersionApplication.Depuis(
|
||||
assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion,
|
||||
assembly.GetCustomAttributes<AssemblyMetadataAttribute>()
|
||||
.FirstOrDefault(a => a.Key == "MaBibliDateBuild")?.Value);
|
||||
}
|
||||
Reference in New Issue
Block a user