update de qobuz pour utiliser les sources lazy
This commit is contained in:
128
pmoupnp/src/config_ext.rs
Normal file
128
pmoupnp/src/config_ext.rs
Normal file
@@ -0,0 +1,128 @@
|
||||
//! Extension pour intégrer la configuration UPnP dans pmoconfig
|
||||
//!
|
||||
//! Ce module fournit le trait `UpnpConfigExt` qui permet d'ajouter facilement
|
||||
//! des méthodes de configuration UPnP à pmoconfig::Config.
|
||||
//!
|
||||
//! Il suit le même pattern que pmocache/src/config_ext.rs pour la cohérence.
|
||||
|
||||
use anyhow::Result;
|
||||
use pmoconfig::Config;
|
||||
use serde_yaml::Value;
|
||||
|
||||
// Constantes par défaut pour les noms UPnP
|
||||
const DEFAULT_MANUFACTURER: &str = "PMOMusic";
|
||||
const DEFAULT_UDN_PREFIX: &str = "pmomusic";
|
||||
const DEFAULT_MODEL_NAME_PREFIX: &str = "PMOMusic";
|
||||
const DEFAULT_FRIENDLY_NAME_PREFIX: &str = "PMOMusic";
|
||||
|
||||
/// Trait d'extension pour ajouter la configuration UPnP à pmoconfig
|
||||
///
|
||||
/// Ce trait étend `pmoconfig::Config` avec des méthodes pour configurer
|
||||
/// les noms et identifiants des devices UPnP.
|
||||
///
|
||||
/// # Exemple
|
||||
///
|
||||
/// ```rust,ignore
|
||||
/// use pmoconfig::get_config;
|
||||
/// use pmoupnp::UpnpConfigExt;
|
||||
///
|
||||
/// let config = get_config();
|
||||
/// let manufacturer = config.get_upnp_manufacturer()?;
|
||||
/// let udn_prefix = config.get_upnp_udn_prefix()?;
|
||||
/// ```
|
||||
pub trait UpnpConfigExt {
|
||||
/// Récupère le fabricant pour les devices UPnP
|
||||
///
|
||||
/// # Returns
|
||||
///
|
||||
/// Le nom du fabricant à afficher dans les descripteurs UPnP (défaut: "PMOMusic")
|
||||
fn get_upnp_manufacturer(&self) -> Result<String>;
|
||||
|
||||
/// Définit le fabricant pour les devices UPnP
|
||||
fn set_upnp_manufacturer(&self, manufacturer: String) -> Result<()>;
|
||||
|
||||
/// Récupère le préfixe UDN pour les devices UPnP
|
||||
///
|
||||
/// # Returns
|
||||
///
|
||||
/// Le préfixe utilisé pour générer les UDN (défaut: "pmomusic")
|
||||
fn get_upnp_udn_prefix(&self) -> Result<String>;
|
||||
|
||||
/// Définit le préfixe UDN pour les devices UPnP
|
||||
fn set_upnp_udn_prefix(&self, prefix: String) -> Result<()>;
|
||||
|
||||
/// Récupère le préfixe pour les noms de modèle des devices UPnP
|
||||
///
|
||||
/// # Returns
|
||||
///
|
||||
/// Le préfixe utilisé pour construire les model names (défaut: "PMOMusic")
|
||||
fn get_upnp_model_name_prefix(&self) -> Result<String>;
|
||||
|
||||
/// Définit le préfixe pour les noms de modèle des devices UPnP
|
||||
fn set_upnp_model_name_prefix(&self, prefix: String) -> Result<()>;
|
||||
|
||||
/// Récupère le préfixe pour les noms conviviaux des devices UPnP
|
||||
///
|
||||
/// # Returns
|
||||
///
|
||||
/// Le préfixe utilisé pour construire les friendly names (défaut: "PMOMusic")
|
||||
fn get_upnp_friendly_name_prefix(&self) -> Result<String>;
|
||||
|
||||
/// Définit le préfixe pour les noms conviviaux des devices UPnP
|
||||
fn set_upnp_friendly_name_prefix(&self, prefix: String) -> Result<()>;
|
||||
}
|
||||
|
||||
impl UpnpConfigExt for Config {
|
||||
fn get_upnp_manufacturer(&self) -> Result<String> {
|
||||
match self.get_value(&["host", "upnp", "manufacturer"]) {
|
||||
Ok(Value::String(s)) if !s.is_empty() => Ok(s),
|
||||
_ => Ok(DEFAULT_MANUFACTURER.to_string()),
|
||||
}
|
||||
}
|
||||
|
||||
fn set_upnp_manufacturer(&self, manufacturer: String) -> Result<()> {
|
||||
self.set_value(
|
||||
&["host", "upnp", "manufacturer"],
|
||||
Value::String(manufacturer),
|
||||
)
|
||||
}
|
||||
|
||||
fn get_upnp_udn_prefix(&self) -> Result<String> {
|
||||
match self.get_value(&["host", "upnp", "udn_prefix"]) {
|
||||
Ok(Value::String(s)) if !s.is_empty() => Ok(s),
|
||||
_ => Ok(DEFAULT_UDN_PREFIX.to_string()),
|
||||
}
|
||||
}
|
||||
|
||||
fn set_upnp_udn_prefix(&self, prefix: String) -> Result<()> {
|
||||
self.set_value(&["host", "upnp", "udn_prefix"], Value::String(prefix))
|
||||
}
|
||||
|
||||
fn get_upnp_model_name_prefix(&self) -> Result<String> {
|
||||
match self.get_value(&["host", "upnp", "model_name_prefix"]) {
|
||||
Ok(Value::String(s)) if !s.is_empty() => Ok(s),
|
||||
_ => Ok(DEFAULT_MODEL_NAME_PREFIX.to_string()),
|
||||
}
|
||||
}
|
||||
|
||||
fn set_upnp_model_name_prefix(&self, prefix: String) -> Result<()> {
|
||||
self.set_value(
|
||||
&["host", "upnp", "model_name_prefix"],
|
||||
Value::String(prefix),
|
||||
)
|
||||
}
|
||||
|
||||
fn get_upnp_friendly_name_prefix(&self) -> Result<String> {
|
||||
match self.get_value(&["host", "upnp", "friendly_name_prefix"]) {
|
||||
Ok(Value::String(s)) if !s.is_empty() => Ok(s),
|
||||
_ => Ok(DEFAULT_FRIENDLY_NAME_PREFIX.to_string()),
|
||||
}
|
||||
}
|
||||
|
||||
fn set_upnp_friendly_name_prefix(&self, prefix: String) -> Result<()> {
|
||||
self.set_value(
|
||||
&["host", "upnp", "friendly_name_prefix"],
|
||||
Value::String(prefix),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ mod object_trait;
|
||||
|
||||
pub mod actions;
|
||||
pub mod cache_registry;
|
||||
pub mod config_ext;
|
||||
pub mod devices;
|
||||
pub mod services;
|
||||
pub mod soap;
|
||||
@@ -20,6 +21,7 @@ use std::{collections::HashMap, sync::Arc};
|
||||
pub use pmoaudiocache::get_audio_cache;
|
||||
pub use pmocovers::get_cover_cache;
|
||||
|
||||
pub use crate::config_ext::UpnpConfigExt;
|
||||
pub use crate::object_trait::*;
|
||||
pub use crate::upnp_server::UpnpServerExt;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user