Allow serving a single file
This commit is contained in:
parent
970813f295
commit
13b1eddd00
|
@ -11,7 +11,8 @@ async fn main() -> Result<()> {
|
|||
.init();
|
||||
|
||||
Server::bind(("localhost", GEMINI_PORT))
|
||||
.add_route("/", PathBuf::from("public"))
|
||||
.add_route("/", PathBuf::from("public")) // Serve directory listings & file contents
|
||||
.add_route("/about", PathBuf::from("README.md")) // Serve a single file
|
||||
.serve()
|
||||
.await
|
||||
}
|
||||
|
|
|
@ -84,9 +84,14 @@ impl Handler {
|
|||
},
|
||||
#[cfg(feature = "serve_dir")]
|
||||
Self::FilesHandler(path) => {
|
||||
let resp = crate::util::serve_dir(path, request.trailing_segments()).await;
|
||||
let resp = if path.is_dir() {
|
||||
crate::util::serve_dir(path, request.trailing_segments()).await
|
||||
} else {
|
||||
let mime = crate::util::guess_mime_from_path(&path);
|
||||
crate::util::serve_file(path, &mime).await
|
||||
};
|
||||
resp.unwrap_or_else(|e| {
|
||||
warn!("Unexpected error serving from dir {}: {:?}", path.display(), e);
|
||||
warn!("Unexpected error serving from {}: {:?}", path.display(), e);
|
||||
Response::server_error("").unwrap()
|
||||
})
|
||||
},
|
||||
|
@ -164,6 +169,9 @@ impl From<PathBuf> for Handler {
|
|||
/// This is equivilent to serving files using [`util::serve_dir()`], and as such will
|
||||
/// include directory listings.
|
||||
///
|
||||
/// The path to a single file can be passed in order to serve only a single file for
|
||||
/// any and all requests.
|
||||
///
|
||||
/// [`util::serve_dir()`]: crate::util::serve_dir()
|
||||
fn from(path: PathBuf) -> Self {
|
||||
Self::FilesHandler(path)
|
||||
|
|
Loading…
Reference in a new issue