34 lines
1 KiB
Rust
34 lines
1 KiB
Rust
#![deny(warnings)]
|
|
|
|
use warp::Filter;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let file = warp::path("todos").and(warp::fs::file("./examples/todos.rs"));
|
|
// NOTE: You could double compress something by adding a compression
|
|
// filter here, a la
|
|
// ```
|
|
// let file = warp::path("todos")
|
|
// .and(warp::fs::file("./examples/todos.rs"))
|
|
// .with(warp::compression::brotli());
|
|
// ```
|
|
// This would result in a browser error, or downloading a file whose contents
|
|
// are compressed
|
|
|
|
let dir = warp::path("ws_chat").and(warp::fs::file("./examples/websockets_chat.rs"));
|
|
|
|
let file_and_dir = warp::get()
|
|
.and(file.or(dir))
|
|
.with(warp::compression::gzip());
|
|
|
|
let examples = warp::path("ex")
|
|
.and(warp::fs::dir("./examples/"))
|
|
.with(warp::compression::deflate());
|
|
|
|
// GET /todos => gzip -> toods.rs
|
|
// GET /ws_chat => gzip -> ws_chat.rs
|
|
// GET /ex/... => deflate -> ./examples/...
|
|
let routes = file_and_dir.or(examples);
|
|
|
|
warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;
|
|
}
|