Crate trillium_static_compiled
source ·Expand description
Serves static file assets from memory, as included in the binary at
compile time. Because this includes file system content at compile
time, it requires a macro interface, static_compiled
.
If the root is a directory, it will recursively serve any files
relative to the path that this handler is mounted at, or an index file
if one is configured with
with_index_file
.
If the root is a file, it will serve that file at all request paths.
This crate contains code from include_dir
, but with
several tweaks to make it more suitable for this specific use case.
use trillium_static_compiled::static_compiled;
let handler = static_compiled!("./examples/files")
.with_index_file("index.html");
// given the following directory layout
//
// examples/files
// ├── index.html
// ├── subdir
// │ └── index.html
// └── subdir_with_no_index
// └── plaintext.txt
//
use trillium_testing::prelude::*;
assert_ok!(
get("/").on(&handler),
"<html>\n <head>\n <script src=\"/js.js\"></script>\n </head>\n <body>\n <h1>hello world</h1>\n </body>\n</html>",
"content-type" => "text/html"
);
assert_not_handled!(get("/file_that_does_not_exist.txt").on(&handler));
assert_ok!(get("/index.html").on(&handler));
assert_ok!(
get("/subdir/index.html").on(&handler),
"subdir index.html 🎈",
"content-type" => "text/html; charset=utf-8"
);
assert_ok!(get("/subdir").on(&handler), "subdir index.html 🎈");
assert_not_handled!(get("/subdir_with_no_index").on(&handler));
assert_ok!(
get("/subdir_with_no_index/plaintext.txt").on(&handler),
"plaintext file",
"content-type" => "text/plain"
);
// with a different index file
let plaintext_index = static_compiled!("./examples/files")
.with_index_file("plaintext.txt");
assert_not_handled!(get("/").on(&plaintext_index));
assert_not_handled!(get("/subdir").on(&plaintext_index));
assert_ok!(
get("/subdir_with_no_index").on(&plaintext_index),
"plaintext file",
"content-type" => "text/plain"
);
// with no index file
let no_index = static_compiled!("./examples/files");
assert_not_handled!(get("/").on(&no_index));
assert_not_handled!(get("/subdir").on(&no_index));
assert_not_handled!(get("/subdir_with_no_index").on(&no_index));
Macros
- Include the path as root. To be passed into
StaticCompiledHandler::new
. - The preferred interface to build a StaticCompiledHandler
Structs
- The static compiled handler which contains the compile-time loaded assets