//! Extension pour intégrer l'API de configuration de pmoconfig dans pmoserver //! //! Ce module fournit le trait `ConfigExt` qui permet d'ajouter facilement //! l'API REST de configuration au serveur. use crate::Server; use anyhow::Result; use pmoconfig::{ApiDoc, api, get_config}; use utoipa::OpenApi; /// Trait d'extension pour ajouter l'API de configuration à pmoserver pub trait ConfigExt { /// Initialise l'API de configuration et enregistre les routes HTTP /// /// # Routes enregistrées /// /// - `GET /api/config` - Récupérer toute la configuration /// - `GET /api/config/{path}` - Récupérer une valeur spécifique (ex: host.http_port) /// - `POST /api/config` - Mettre à jour une valeur /// - `GET /swagger-ui/config` - Documentation interactive Swagger /// /// # Exemple /// /// ```rust,ignore /// use pmoserver::{ServerBuilder, ConfigExt}; /// /// #[tokio::main] /// async fn main() -> anyhow::Result<()> { /// let mut server = ServerBuilder::new_configured().build(); /// server.init_config_api().await?; /// server.start().await; /// Ok(()) /// } /// ``` async fn init_config_api(&mut self) -> Result<()>; } impl ConfigExt for Server { async fn init_config_api(&mut self) -> Result<()> { let config = get_config(); // API REST pour la configuration let api_router = api::create_router(config); let openapi = ApiDoc::openapi(); self.add_openapi(api_router, openapi, "config").await; Ok(()) } }