Files
pmomusic/pmomediaserver/src/server_ext.rs

82 lines
2.2 KiB
Rust

//! # 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.
//!
//! **Note**: Ce module réexporte `MusicSourceExt` de `pmosource` et ajoute des
//! méthodes spécifiques au MediaServer UPnP.
use async_trait::async_trait;
use pmoserver::Server;
use pmosource::MusicSource;
use std::sync::Arc;
// Réexporter le trait de base de pmosource
pub use pmosource::MusicSourceExt;
/// Récupère le registre global de sources (délègue à pmosource)
///
/// # Examples
///
/// ```ignore
/// use pmomediaserver::server_ext::get_source_registry;
///
/// let sources = pmosource::api::list_all_sources().await;
/// ```
#[deprecated(
since = "0.2.0",
note = "Use pmosource::api::list_all_sources() directly"
)]
pub async fn get_source_registry() -> Vec<Arc<dyn MusicSource>> {
pmosource::api::list_all_sources().await
}
/// Trait d'extension pour le serveur MediaServer UPnP
///
/// Ce trait ajoute des méthodes spécifiques au MediaServer UPnP.
/// Pour l'enregistrement de sources, utilisez le trait `MusicSourceExt` de `pmosource`.
///
/// **Note**: Ce trait est maintenant deprecated. Utilisez directement `MusicSourceExt`
/// de `pmosource` pour l'enregistrement et la gestion des sources.
///
/// # Migration
///
/// Ancien code :
/// ```ignore
/// use pmomediaserver::server_ext::MediaServerExt;
/// server.register_music_source(source).await;
/// ```
///
/// Nouveau code :
/// ```ignore
/// use pmosource::MusicSourceExt;
/// server.register_music_source(source).await;
/// ```
#[async_trait]
pub trait MediaServerExt {
/// Compte le nombre de sources musicales enregistrées
///
/// # Returns
///
/// Le nombre total de sources.
async fn count_music_sources(&self) -> usize {
pmosource::api::list_all_sources().await.len()
}
}
#[async_trait]
impl MediaServerExt for Server {
// Implementation par défaut fournie dans le trait
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_trait_exists() {
// Ce test vérifie simplement que le module compile
// Les tests fonctionnels sont maintenant dans pmosource
}
}