lxy 0.1.1

A convenient async http and RPC framework in Rust
Documentation
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)
  }
}