use crate::{traits::MiddlewareTrait, Middleware};
use ayun_config::config;
use tower_http::services::{ServeDir, ServeFile};
pub struct Asset;
impl MiddlewareTrait for Asset {
fn handle() -> Middleware {
Box::new(|router| {
let config = config::<ayun_view::config::View>("view")?.asset;
let serve_dir =
ServeDir::new(config.path).not_found_service(ServeFile::new(&config.fallback));
Ok(router.nest_service(
&config.url,
match config.gzip {
true => serve_dir.precompressed_gzip(),
false => serve_dir,
},
))
})
}
}