Revue de code et refactoring
This commit is contained in:
@@ -251,7 +251,7 @@ impl DeviceInstance {
|
||||
}
|
||||
|
||||
/// Enregistre toutes les URLs du device et de ses services dans le serveur.
|
||||
pub fn register_urls<'a, S: crate::UpnpServer + ?Sized>(&'a self, server: &'a mut S) -> std::pin::Pin<Box<dyn std::future::Future<Output = Result<(), DeviceError>> + 'a>> {
|
||||
pub fn register_urls<'a>(&'a self, server: &'a mut pmoserver::Server) -> std::pin::Pin<Box<dyn std::future::Future<Output = Result<(), DeviceError>> + 'a>> {
|
||||
Box::pin(async move {
|
||||
info!(
|
||||
"✅ Device description for {} available at: {}{}",
|
||||
@@ -330,4 +330,45 @@ impl DeviceInstance {
|
||||
xml,
|
||||
).into_response()
|
||||
}
|
||||
|
||||
/// Crée un SsdpDevice configuré pour ce device UPnP.
|
||||
///
|
||||
/// Cette méthode simplifie la création d'un device SSDP en configurant automatiquement :
|
||||
/// - L'UDN du device
|
||||
/// - Le type de device
|
||||
/// - La location (URL de description)
|
||||
/// - Le serveur (User-Agent avec OS/version détecté automatiquement)
|
||||
/// - Les types de notification pour tous les services
|
||||
///
|
||||
/// # Arguments
|
||||
///
|
||||
/// * `app_name` - Nom de l'application (ex: "PMOMusic")
|
||||
/// * `app_version` - Version de l'application (ex: "1.0")
|
||||
///
|
||||
/// # Exemple
|
||||
///
|
||||
/// ```ignore
|
||||
/// let renderer_instance = MEDIA_RENDERER.create_instance();
|
||||
/// let ssdp_device = renderer_instance.to_ssdp_device("PMOMusic", "1.0");
|
||||
/// ssdp_server.add_device(ssdp_device);
|
||||
/// ```
|
||||
pub fn to_ssdp_device(&self, app_name: &str, app_version: &str) -> crate::ssdp::SsdpDevice {
|
||||
let location = format!("{}{}", self.base_url(), self.description_route());
|
||||
let os_string = pmoutils::get_os_string();
|
||||
let server_string = format!("{} UPnP/1.1 {}/{}", os_string, app_name, app_version);
|
||||
|
||||
let mut ssdp_device = crate::ssdp::SsdpDevice::new(
|
||||
self.udn().to_string(),
|
||||
self.model.device_type(),
|
||||
location,
|
||||
server_string,
|
||||
);
|
||||
|
||||
// Ajouter les types de notification pour chaque service
|
||||
for service in self.services() {
|
||||
ssdp_device.add_notification_type(service.service_type());
|
||||
}
|
||||
|
||||
ssdp_device
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user