#[cfg(test)]
extern crate self as rust_web_server;
#[allow(unused_imports)]
#[doc(hidden)]
pub use rws_base::{core, dns, ext, http, mime_type, null, symbol, url};
#[allow(unused_imports)]
#[doc(hidden)]
pub use rws_http::{body, client_hint, compression, cors, entry_point, error, extract, header, json, range, request, response, server_config, virtual_host};
pub mod app;
#[cfg(feature = "auth")]
pub mod auth;
#[cfg(feature = "http2")]
pub mod async_state;
#[cfg(feature = "http2")]
#[doc(hidden)]
pub mod async_bridge;
pub mod session;
#[cfg(not(target_arch = "wasm32"))]
#[doc(hidden)]
pub mod redis_protocol;
pub mod sse;
pub mod cookie;
#[cfg(all(unix, any(feature = "http1", feature = "http2")))]
pub mod systemd;
pub mod ip_filter;
pub mod blocklist;
pub mod cache;
pub mod early_hints;
pub mod disk_guard;
pub mod authz;
pub mod config_reload;
#[cfg(not(target_arch = "wasm32"))]
pub mod config_watch;
#[cfg(any(feature = "auth-asymmetric", feature = "sso"))]
pub mod rsa_key;
pub mod feature;
pub mod maintenance;
pub mod metrics;
pub mod mcp;
pub mod request_log;
pub mod request_id;
#[cfg(not(target_arch = "wasm32"))]
pub mod otel;
pub mod middleware;
pub mod rate_limit;
pub mod router;
pub mod schema;
pub mod state;
pub mod test_client;
pub mod application;
pub mod controller;
pub mod language;
#[cfg(not(target_arch = "wasm32"))]
pub mod log;
pub mod server;
#[cfg(not(target_arch = "wasm32"))]
pub mod thread_pool;
pub mod pagination;
pub mod rewrite;
pub mod scheduler;
#[cfg(not(target_arch = "wasm32"))]
pub mod circuit_breaker;
pub mod service_discovery;
pub mod config_binding;
pub mod di;
pub mod validate;
#[cfg(any(feature = "model-sqlite", feature = "model-postgres", feature = "model-mysql"))]
pub mod model;
#[cfg(not(target_arch = "wasm32"))]
pub mod websocket;
pub mod http_client;
#[cfg(feature = "crypto")]
pub mod crypto;
#[cfg(feature = "csrf")]
pub mod csrf;
#[cfg(feature = "sso")]
pub mod sso;
#[cfg(feature = "openapi")]
pub mod openapi;
#[cfg(feature = "secrets")]
pub mod secrets;
#[cfg(not(target_arch = "wasm32"))]
pub mod timeout;
#[cfg(feature = "http2")]
#[doc(hidden)]
pub mod tls;
#[cfg(feature = "http2")]
#[doc(hidden)]
pub mod h2_server;
#[cfg(feature = "http3")]
#[doc(hidden)]
pub mod h3_handler;
#[cfg(any(feature = "storage-local", feature = "storage-s3", feature = "storage-azure", feature = "storage-gcs", feature = "secrets"))]
pub mod storage;
#[cfg(all(any(feature = "http-client", feature = "http2"), not(target_arch = "wasm32")))]
pub fn crypto_provider() -> rustls::crypto::CryptoProvider {
#[cfg(feature = "fips")]
return rustls::crypto::default_fips_provider();
#[cfg(not(feature = "fips"))]
rustls::crypto::aws_lc_rs::default_provider()
}
pub const FIPS: bool = cfg!(feature = "fips");
#[cfg(all(any(feature = "http-client", feature = "http2"), not(target_arch = "wasm32")))]
#[doc(hidden)]
pub fn tls_client_builder() -> rustls::ConfigBuilder<rustls::ClientConfig, rustls::WantsVerifier> {
rustls::ClientConfig::builder_with_provider(std::sync::Arc::new(crate::crypto_provider()))
.with_safe_default_protocol_versions()
.expect("aws-lc-rs supports rustls's default protocol versions")
}
#[cfg(test)]
pub(crate) mod test_env;
#[cfg(feature = "macros")]
#[doc(hidden)]
pub use rws_macros::{Config, FromRequest, JsonSchema, Validate};