Revue de code et refactoring

This commit is contained in:
2025-10-06 20:24:04 +02:00
parent c57ef5df30
commit e260330877
20 changed files with 445 additions and 440 deletions

View File

@@ -1,34 +1,24 @@
use pmoupnp::{
mediarenderer::MEDIA_RENDERER,
ssdp::{SsdpDevice, SsdpServer},
ssdp::SsdpServer,
UpnpServer,
UpnpModel,
};
use pmoserver::{
logs::{log_dump, log_sse, LogState, SseLayer},
logs::LoggingOptions,
ServerBuilder
};
use pmoapp::Webapp;
use tracing_subscriber::Registry;
use tracing_subscriber::prelude::*;
use pmoapp::{Webapp, WebAppExt};
use tracing::info;
#[tokio::main]
async fn main() {
// Initialiser le logging d'abord
let log_state = LogState::new(1000);
let subscriber = Registry::default()
.with(
tracing_subscriber::fmt::layer()
.with_target(true)
.with_level(true)
.with_ansi(true),
)
.with(SseLayer::new(log_state.clone()));
tracing::subscriber::set_global_default(subscriber).unwrap();
// Créer le serveur
let mut server = ServerBuilder::new_configured().build();
// Initialiser le logging et enregistrer les routes de logs
server.init_logging(LoggingOptions::default()).await;
// Routes de base
server
.add_route("/info", || async {
@@ -36,33 +26,12 @@ async fn main() {
})
.await;
server.add_spa::<Webapp>("/app").await;
// Ajouter la webapp via le trait WebAppExt
info!("📡 Registering Web application...");
server.add_webapp_with_redirect::<Webapp>("/app").await;
// Routes de logging
server
.add_handler_with_state("/log-sse", log_sse, log_state.clone())
.await;
server
.add_handler_with_state("/log-dump", log_dump, log_state.clone())
.await;
server.add_redirect("/", "/app").await;
// Créer et enregistrer le MediaRenderer
info!("🎵 Creating MediaRenderer instance...");
let renderer_instance = MEDIA_RENDERER.create_instance();
// Créer et ajouter les instances de services
for service in MEDIA_RENDERER.services().iter() {
let service_instance = service.create_instance();
renderer_instance
.add_service(service_instance)
.expect("Failed to add service to renderer");
}
info!("📡 Registering MediaRenderer routes...");
renderer_instance
.register_urls(&mut server)
info!("📡 Registering MediaRenderer...");
let renderer_instance = server.register_device(MEDIA_RENDERER.clone())
.await
.expect("Failed to register MediaRenderer routes");
@@ -76,25 +45,9 @@ async fn main() {
let mut ssdp_server = SsdpServer::new();
ssdp_server.start().expect("Failed to start SSDP server");
// Créer le device SSDP pour le MediaRenderer
let location = format!("{}{}",
renderer_instance.base_url(),
renderer_instance.description_route()
);
let mut ssdp_device = SsdpDevice::new(
renderer_instance.udn().to_string(),
MEDIA_RENDERER.device_type(),
location,
format!("Linux/5.0 UPnP/1.1 PMOMusic/1.0"),
);
// Ajouter les types de notification pour chaque service
for service in renderer_instance.services() {
ssdp_device.add_notification_type(service.service_type());
}
// Enregistrer le device et envoyer les annonces SSDP
// Créer et enregistrer le device SSDP pour le MediaRenderer
let ssdp_device = renderer_instance
.to_ssdp_device("PMOMusic", "1.0");
ssdp_server.add_device(ssdp_device);
info!("✅ SSDP announcements sent for MediaRenderer");