Files
pmomusic/PMOMusic/src/main.rs

57 lines
1.6 KiB
Rust
Raw Normal View History

use pmoupnp::{
mediarenderer::MEDIA_RENDERER,
2025-10-06 20:24:04 +02:00
ssdp::SsdpServer,
UpnpServer,
UpnpModel,
};
use pmoserver::{
2025-10-06 20:24:04 +02:00
logs::LoggingOptions,
ServerBuilder
};
2025-10-06 20:24:04 +02:00
use pmoapp::{Webapp, WebAppExt};
2025-10-01 20:49:50 +02:00
use tracing::info;
#[tokio::main]
async fn main() {
// Créer le serveur
let mut server = ServerBuilder::new_configured().build();
2025-10-06 20:24:04 +02:00
// Initialiser le logging et enregistrer les routes de logs
server.init_logging(LoggingOptions::default()).await;
// Routes de base
server
.add_route("/info", || async {
serde_json::json!({"version": "1.0.0"})
})
.await;
2025-10-06 20:24:04 +02:00
// Ajouter la webapp via le trait WebAppExt
info!("📡 Registering Web application...");
server.add_webapp_with_redirect::<Webapp>("/app").await;
2025-10-06 20:24:04 +02:00
info!("📡 Registering MediaRenderer...");
let renderer_instance = server.register_device(MEDIA_RENDERER.clone())
.await
.expect("Failed to register MediaRenderer routes");
info!("✅ MediaRenderer ready at {}{}",
renderer_instance.base_url(),
renderer_instance.description_route()
);
// Créer et démarrer le serveur SSDP
info!("📡 Starting SSDP discovery...");
let mut ssdp_server = SsdpServer::new();
ssdp_server.start().expect("Failed to start SSDP server");
2025-10-06 20:24:04 +02:00
// 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");
2025-10-01 20:49:50 +02:00
server.start().await;
server.wait().await;
}