lmrc_proxy/lib.rs
1//! # lmrc-proxy
2//!
3//! HTTP reverse proxy and API gateway utilities for LMRC Stack applications.
4//!
5//! This library provides:
6//! - HTTP reverse proxy with configurable behavior
7//! - Subdomain-based routing
8//! - Route resolution trait for flexible backend discovery
9//! - Axum middleware for proxy and routing
10//!
11//! ## Quick Start
12//!
13//! ```rust
14//! use lmrc_proxy::{
15//! routing::{StaticRouteResolver, RouteResolver},
16//! ProxyConfig,
17//! };
18//! use std::sync::Arc;
19//!
20//! # #[tokio::main]
21//! # async fn main() {
22//! let resolver = Arc::new(
23//! StaticRouteResolver::new()
24//! .add_route("api", "http://api-service:8080")
25//! .add_route("admin", "http://admin-service:9000")
26//! );
27//!
28//! // Use resolver to look up backend URLs
29//! let backend = resolver.resolve("api").await;
30//! assert_eq!(backend, Some("http://api-service:8080".to_string()));
31//! # }
32//! ```
33
34pub mod client;
35pub mod error;
36pub mod routing;
37pub mod middleware;
38
39// Re-export commonly used types
40pub use client::{proxy_request, ProxyConfig};
41pub use error::{ProxyError, ProxyResult};
42pub use routing::{extract_subdomain, RouteResolver, StaticRouteResolver};
43pub use middleware::{subdomain_extractor, subdomain_proxy, Subdomain};