elif_http/
lib.rs

1//! # elif-http
2//! 
3//! HTTP server core for the elif.rs LLM-friendly web framework.
4//! 
5//! This crate provides a NestJS-like HTTP server experience with:
6//! - Clean, intuitive API that abstracts Axum complexity
7//! - Integration with the elif-core DI container
8//! - Built-in middleware pipeline
9//! - Graceful shutdown handling
10//! - Health check endpoints
11//! - Framework-native routing system
12
13pub mod server;
14pub mod config;
15pub mod error;
16pub mod tests;
17pub mod integration_tests;
18pub mod routing;
19pub mod request;
20pub mod response;
21pub mod json;
22pub mod middleware;
23pub mod controller;
24pub mod handler;
25pub mod logging;
26
27// Main server API - NestJS-like experience
28pub use server::Server;
29pub use config::HttpConfig;
30pub use error::{HttpError, HttpResult};
31
32// Re-export routing types
33pub use routing::{
34    HttpMethod, RouteInfo, RouteRegistry,
35    ElifRouter, Route, RouteBuilder,
36    PathParams, RouteParam, ParamError, ParamType,
37    RouteGroup, GroupBuilder,
38};
39
40// Re-export request/response types  
41pub use request::{ElifRequest, RequestExtractor, ElifQuery, ElifPath, ElifState};
42pub use response::{ElifResponse, ResponseBody, IntoElifResponse, ElifStatusCode, ElifHeaderMap};
43pub use json::{ElifJson, JsonError, JsonResponse, ValidationErrors, ApiResponse};
44
45// Re-export middleware types
46pub use middleware::{
47    Middleware, MiddlewarePipeline, ErrorHandlingMiddleware,
48    logging::LoggingMiddleware,
49    enhanced_logging::{EnhancedLoggingMiddleware, LoggingConfig as MiddlewareLoggingConfig, RequestContext},
50    timing::{TimingMiddleware, RequestStartTime, format_duration},
51    tracing::{TracingMiddleware, TracingConfig, RequestMetadata},
52    timeout::{TimeoutMiddleware, TimeoutConfig, TimeoutInfo, apply_timeout},
53    body_limit::{BodyLimitMiddleware, BodyLimitConfig, BodyLimitInfo, limit_body_size, limits},
54};
55
56// Re-export structured logging types
57pub use logging::{
58    LoggingConfig, init_logging, log_startup_info, log_shutdown_info, 
59    LoggingContext, structured,
60};
61
62// Re-export controller types
63pub use controller::{Controller, BaseController, QueryParams, PaginationMeta};
64
65
66// Re-export handler types
67pub use handler::{ElifHandler, elif_handler};
68
69// Framework-native types - Use these instead of raw Axum types
70// Note: Use Router from routing module, not axum::Router
71// Note: Use ElifJson instead of axum::Json
72// Note: Use ElifResponse instead of axum::Response  
73// Note: HTTP types are available through response/request modules when needed