moduvex_starter_web/
lib.rs1pub mod tracing_middleware;
18
19pub use moduvex_config;
22pub use moduvex_core;
23pub use moduvex_http;
24pub use moduvex_observe;
25pub use moduvex_runtime;
26pub use tracing_middleware::TracingMiddleware;
27
28pub const WEB_DEFAULTS: &str = r#"
33[server]
34port = 8080
35host = "0.0.0.0"
36
37[observe.log]
38level = "info"
39format = "pretty"
40
41[observe.metrics]
42enabled = true
43"#;
44
45pub fn load_config(
49 name: &str,
50 dir: &std::path::Path,
51) -> Result<moduvex_config::ConfigLoader, moduvex_config::ConfigError> {
52 moduvex_config::ConfigLoader::load_with_defaults(WEB_DEFAULTS, name, dir)
53}
54
55pub fn default_config() -> Result<moduvex_config::ConfigLoader, moduvex_config::ConfigError> {
57 moduvex_config::ConfigLoader::from_defaults(WEB_DEFAULTS)
58}
59
60pub mod prelude {
63 pub use moduvex_core::prelude::*;
65
66 pub use moduvex_http::{
68 FromRequest, HttpServer, IntoHandler, Json, Middleware, Path, Query, Request, Response,
69 Router, State, StatusCode,
70 };
71
72 pub use moduvex_config::{ConfigLoader, Profile};
74
75 pub use moduvex_observe::{debug, error, info, trace_event, warn};
77 pub use moduvex_observe::{Counter, Gauge, Histogram, Span};
78
79 pub use crate::TracingMiddleware;
81
82 pub use crate::{default_config, load_config, WEB_DEFAULTS};
84}
85
86#[cfg(test)]
87mod tests {
88 use super::*;
89
90 #[test]
91 fn default_config_loads_web_defaults() {
92 let loader = default_config().unwrap();
93 let raw = loader.raw();
94 let server = raw.get("server").unwrap().as_table().unwrap();
95 assert_eq!(server["port"].as_integer().unwrap(), 8080);
96 assert_eq!(server["host"].as_str().unwrap(), "0.0.0.0");
97 }
98
99 #[test]
100 fn web_defaults_parses_as_valid_toml() {
101 let loader = default_config().unwrap();
103 assert!(loader.raw().as_table().is_some());
104 }
105}