2025-10-17 09:01:24 +02:00
|
|
|
//! # Extension trait pour le serveur MediaServer
|
|
|
|
|
//!
|
|
|
|
|
//! Ce module fournit un trait d'extension pour `pmoserver::Server` permettant
|
|
|
|
|
//! d'enregistrer facilement des sources musicales et de configurer le MediaServer.
|
2025-10-17 12:45:18 +02:00
|
|
|
//!
|
|
|
|
|
//! **Note**: Ce module réexporte `MusicSourceExt` de `pmosource` et ajoute des
|
|
|
|
|
//! méthodes spécifiques au MediaServer UPnP.
|
2025-10-17 09:01:24 +02:00
|
|
|
|
|
|
|
|
use async_trait::async_trait;
|
|
|
|
|
use pmoserver::Server;
|
2025-10-19 13:42:29 +02:00
|
|
|
use pmosource::MusicSource;
|
2025-10-17 09:01:24 +02:00
|
|
|
use std::sync::Arc;
|
|
|
|
|
|
2025-10-17 12:45:18 +02:00
|
|
|
// Réexporter le trait de base de pmosource
|
|
|
|
|
pub use pmosource::MusicSourceExt;
|
2025-10-17 09:01:24 +02:00
|
|
|
|
2025-10-17 12:45:18 +02:00
|
|
|
/// Trait d'extension pour le serveur MediaServer UPnP
|
2025-10-17 09:01:24 +02:00
|
|
|
///
|
2025-10-17 12:45:18 +02:00
|
|
|
/// Ce trait ajoute des méthodes spécifiques au MediaServer UPnP.
|
|
|
|
|
/// Pour l'enregistrement de sources, utilisez le trait `MusicSourceExt` de `pmosource`.
|
2025-10-17 09:01:24 +02:00
|
|
|
///
|
2025-10-17 12:45:18 +02:00
|
|
|
/// **Note**: Ce trait est maintenant deprecated. Utilisez directement `MusicSourceExt`
|
|
|
|
|
/// de `pmosource` pour l'enregistrement et la gestion des sources.
|
|
|
|
|
///
|
|
|
|
|
/// # Migration
|
2025-10-17 09:01:24 +02:00
|
|
|
///
|
2025-10-17 12:45:18 +02:00
|
|
|
/// Ancien code :
|
2025-10-17 09:01:24 +02:00
|
|
|
/// ```ignore
|
|
|
|
|
/// use pmomediaserver::server_ext::MediaServerExt;
|
2025-10-17 12:45:18 +02:00
|
|
|
/// server.register_music_source(source).await;
|
|
|
|
|
/// ```
|
2025-10-17 09:01:24 +02:00
|
|
|
///
|
2025-10-17 12:45:18 +02:00
|
|
|
/// Nouveau code :
|
|
|
|
|
/// ```ignore
|
|
|
|
|
/// use pmosource::MusicSourceExt;
|
|
|
|
|
/// server.register_music_source(source).await;
|
2025-10-17 09:01:24 +02:00
|
|
|
/// ```
|
|
|
|
|
#[async_trait]
|
|
|
|
|
pub trait MediaServerExt {
|
|
|
|
|
/// Compte le nombre de sources musicales enregistrées
|
|
|
|
|
///
|
|
|
|
|
/// # Returns
|
|
|
|
|
///
|
|
|
|
|
/// Le nombre total de sources.
|
2025-10-17 12:45:18 +02:00
|
|
|
async fn count_music_sources(&self) -> usize {
|
|
|
|
|
pmosource::api::list_all_sources().await.len()
|
|
|
|
|
}
|
2025-10-17 09:01:24 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[async_trait]
|
|
|
|
|
impl MediaServerExt for Server {
|
2025-10-17 12:45:18 +02:00
|
|
|
// Implementation par défaut fournie dans le trait
|
2025-10-17 09:01:24 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
|
mod tests {
|
|
|
|
|
use super::*;
|
|
|
|
|
|
2025-10-17 12:45:18 +02:00
|
|
|
#[test]
|
|
|
|
|
fn test_trait_exists() {
|
|
|
|
|
// Ce test vérifie simplement que le module compile
|
|
|
|
|
// Les tests fonctionnels sont maintenant dans pmosource
|
2025-10-17 09:01:24 +02:00
|
|
|
}
|
|
|
|
|
}
|