refactor: replace absolute URLs with route-based cover URLs and generalize caching

- Remplacer les appels à `covers_absolute_url_for` par `covers_route_for` pour générer des URLs relatives basées sur les routes
- Introduire le trait `CoverCacheable` pour généraliser le cache des covers (Album, Playlist, Artist, Track)
- Remplacer les fonctions spécifiques (`cache_album_covers`, etc.) par une fonction générique `cache_covers`
- Simplifier le code en unifiant la logique de mise en cache des covers
- Corriger l'initialisation de `PMO_SERVER_URL` pour utiliser `base_url()` (incluant le port) au lieu d'une URL brute
This commit is contained in:
2026-03-24 15:02:14 +01:00
parent 1164a11410
commit 76b7c126c2
5 changed files with 118 additions and 48 deletions

View File

@@ -116,17 +116,12 @@ impl Server {
let base_url = base_url.into();
// Initialiser PMO_SERVER_URL pour que tous les caches puissent construire des URLs absolues
// sans avoir besoin de propager base_url manuellement.
// SAFETY: appelé une seule fois au démarrage du serveur, avant tout thread concurrent.
unsafe { std::env::set_var("PMO_SERVER_URL", &base_url) };
// Créer le router initial avec l'endpoint de registre
let registry_route = Router::new()
.route("/api/registry", get(get_api_registry))
.with_state(api_registry.clone());
Self {
let server = Self {
name: name.into(),
base_url,
http_port,
@@ -136,7 +131,14 @@ impl Server {
log_state: None,
api_registry,
shutdown_token: CancellationToken::new(),
}
};
// Initialiser PMO_SERVER_URL avec l'URL complète (incluant le port).
// base_url() normalise l'URL en ajoutant le port si absent.
// SAFETY: appelé une seule fois au démarrage du serveur, avant tout thread concurrent.
unsafe { std::env::set_var("PMO_SERVER_URL", server.base_url()) };
server
}
pub fn new_configured() -> Self {