pub mod tracing_middleware;
pub use moduvex_config;
pub use moduvex_core;
pub use moduvex_http;
pub use moduvex_observe;
pub use moduvex_runtime;
pub use tracing_middleware::TracingMiddleware;
pub const WEB_DEFAULTS: &str = r#"
[server]
port = 8080
host = "0.0.0.0"
[observe.log]
level = "info"
format = "pretty"
[observe.metrics]
enabled = true
"#;
pub fn load_config(
name: &str,
dir: &std::path::Path,
) -> Result<moduvex_config::ConfigLoader, moduvex_config::ConfigError> {
moduvex_config::ConfigLoader::load_with_defaults(WEB_DEFAULTS, name, dir)
}
pub fn default_config() -> Result<moduvex_config::ConfigLoader, moduvex_config::ConfigError> {
moduvex_config::ConfigLoader::from_defaults(WEB_DEFAULTS)
}
pub mod prelude {
pub use moduvex_core::prelude::*;
pub use moduvex_http::{
FromRequest, HttpServer, IntoHandler, Json, Middleware, Path, Query, Request, Response,
Router, State, StatusCode,
};
pub use moduvex_config::{ConfigLoader, Profile};
pub use moduvex_observe::{debug, error, info, trace_event, warn};
pub use moduvex_observe::{Counter, Gauge, Histogram, Span};
pub use crate::TracingMiddleware;
pub use crate::{default_config, load_config, WEB_DEFAULTS};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_config_loads_web_defaults() {
let loader = default_config().unwrap();
let raw = loader.raw();
let server = raw.get("server").unwrap().as_table().unwrap();
assert_eq!(server["port"].as_integer().unwrap(), 8080);
assert_eq!(server["host"].as_str().unwrap(), "0.0.0.0");
}
#[test]
fn web_defaults_parses_as_valid_toml() {
let loader = default_config().unwrap();
assert!(loader.raw().as_table().is_some());
}
}