use super::{HttpServer, Router, ServerConfig};
use crate::error::Result;
impl crate::AppBuilder {
pub fn with_http<F>(&mut self, register_routes: F) -> Result<&mut Self>
where
F: Fn(&mut Router),
{
self.bind_config::<ServerConfig>()?;
let mut router = Router::new();
router.layer(crate::app::layer::AppLayer(self.app().clone()));
#[cfg(feature = "request-context")]
router.layer(crate::context::layer::ContextLayer);
#[cfg(feature = "otel")]
router.layer(crate::telemetry::TracingLayer);
register_routes(&mut router);
let router_service = router.build();
let config = self.get_config::<ServerConfig>()?;
let server = HttpServer::new(router_service, config);
self.add_server(server);
Ok(self)
}
}