Serve static files
This commit is contained in:
parent
f193ce3064
commit
c61850fcc3
39
Cargo.lock
generated
39
Cargo.lock
generated
|
@ -970,6 +970,16 @@ version = "0.3.16"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
|
||||
|
||||
[[package]]
|
||||
name = "mime_guess"
|
||||
version = "2.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
|
||||
dependencies = [
|
||||
"mime",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
version = "0.2.1"
|
||||
|
@ -1815,6 +1825,7 @@ dependencies = [
|
|||
"tokio",
|
||||
"toml",
|
||||
"tower",
|
||||
"tower-http",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1871,6 +1882,19 @@ dependencies = [
|
|||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-util"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.5.9"
|
||||
|
@ -1909,7 +1933,13 @@ dependencies = [
|
|||
"http",
|
||||
"http-body",
|
||||
"http-range-header",
|
||||
"httpdate",
|
||||
"mime",
|
||||
"mime_guess",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tower-layer",
|
||||
"tower-service",
|
||||
|
@ -2037,6 +2067,15 @@ dependencies = [
|
|||
"unic-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "2.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
|
||||
dependencies = [
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-bidi"
|
||||
version = "0.3.8"
|
||||
|
|
|
@ -18,5 +18,6 @@ thiserror = "1.0.32"
|
|||
tokio = { version = "1.20.1", features = ["full"] }
|
||||
toml = "0.5.9"
|
||||
tower = "0.4.13"
|
||||
tower-http = { version = "0.3.4", features = ["fs"] }
|
||||
|
||||
[features]
|
||||
|
|
14
src/main.rs
14
src/main.rs
|
@ -10,6 +10,7 @@ use axum::response::Html;
|
|||
use axum::response::IntoResponse;
|
||||
use axum::response::Redirect;
|
||||
use axum::response::Response;
|
||||
use axum::routing::get_service;
|
||||
use axum::{
|
||||
routing::{get, post},
|
||||
Router,
|
||||
|
@ -25,6 +26,7 @@ use tasks::Task;
|
|||
use tera::Tera;
|
||||
use thiserror::Error as ThisError;
|
||||
use tower::ServiceBuilder;
|
||||
use tower_http::services::ServeDir;
|
||||
|
||||
#[derive(ThisError, Debug)]
|
||||
pub enum Error {
|
||||
|
@ -94,6 +96,7 @@ pub struct Config {
|
|||
secret: String,
|
||||
connection_string: String,
|
||||
template_dir: Option<String>,
|
||||
static_dir: Option<std::path::PathBuf>,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
|
@ -128,6 +131,16 @@ async fn main() -> Result<(), Error> {
|
|||
.route("/create", get(tasks::create_form))
|
||||
.route("/create", post(tasks::create_backend));
|
||||
|
||||
let serve_dir = get_service(ServeDir::new(
|
||||
config.static_dir.unwrap_or_else(|| "static".into()),
|
||||
))
|
||||
.handle_error(|e: std::io::Error| async move {
|
||||
(
|
||||
StatusCode::INTERNAL_SERVER_ERROR,
|
||||
format!("Unhandled server error: {}", e),
|
||||
)
|
||||
});
|
||||
|
||||
let app = Router::new()
|
||||
.route("/", get(homepage))
|
||||
.route("/register", post(users::create_user))
|
||||
|
@ -135,6 +148,7 @@ async fn main() -> Result<(), Error> {
|
|||
.route("/login", get(users::login_form))
|
||||
.route("/login", post(users::login_backend))
|
||||
.nest("/tasks", task_routes)
|
||||
.nest("/static", serve_dir)
|
||||
.layer(
|
||||
ServiceBuilder::new()
|
||||
.layer(Extension(pool))
|
||||
|
|
8
static/style.css
Normal file
8
static/style.css
Normal file
|
@ -0,0 +1,8 @@
|
|||
.wrapper {
|
||||
/* Text margin */
|
||||
margin: auto;
|
||||
width: 60%;
|
||||
padding: 10px;
|
||||
perspective: 1000px;
|
||||
}
|
||||
|
|
@ -1,8 +1,11 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>2m2d</title>
|
||||
<link rel="stylesheet" href="/static/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Reference in a new issue