summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2023-01-28 18:04:00 -0500
committerTyler Murphy <tylermurphy534@gmail.com>2023-01-28 18:04:00 -0500
commitb58654fd70958d89b344a6f7acac204f67ae9879 (patch)
tree60a1960d0d265c9f661e633022164f33e099c81c /src/main.rs
parentnew rust, clippy (diff)
downloadxssbook-b58654fd70958d89b344a6f7acac204f67ae9879.tar.gz
xssbook-b58654fd70958d89b344a6f7acac204f67ae9879.tar.bz2
xssbook-b58654fd70958d89b344a6f7acac204f67ae9879.zip
fmt
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs80
1 files changed, 53 insertions, 27 deletions
diff --git a/src/main.rs b/src/main.rs
index 31b749e..cd137b9 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,18 +1,31 @@
+use axum::{
+ body::HttpBody,
+ extract::ConnectInfo,
+ http::{Request, StatusCode},
+ middleware::{self, Next},
+ response::Response,
+ Extension, RequestExt, Router,
+};
use std::{net::SocketAddr, process::exit};
-use axum::{Router, response::Response, http::{Request, StatusCode}, middleware::{Next, self}, extract::ConnectInfo, RequestExt, body::HttpBody, Extension};
use tower_cookies::CookieManagerLayer;
-use tracing::{metadata::LevelFilter, error, info};
-use tracing_subscriber::{prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, Layer, filter::filter_fn};
+use tracing::{error, info, metadata::LevelFilter};
+use tracing_subscriber::{
+ filter::filter_fn, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, Layer,
+};
use types::http::ResponseCode;
-use crate::{api::{pages, auth, users, posts}, types::extract::RouterURI};
+use crate::{
+ api::{auth, pages, posts, users},
+ types::extract::RouterURI,
+};
mod api;
+mod console;
mod database;
mod types;
-mod console;
-async fn serve<B>(req: Request<B>, next: Next<B>) -> Response where
+async fn serve<B>(req: Request<B>, next: Next<B>) -> Response
+where
B: Send + Sync + 'static + HttpBody,
{
let uri = req.uri();
@@ -23,15 +36,22 @@ async fn serve<B>(req: Request<B>, next: Next<B>) -> Response where
file
}
-async fn log<B>(mut req: Request<B>, next: Next<B>) -> Response where
+async fn log<B>(mut req: Request<B>, next: Next<B>) -> Response
+where
B: Send + Sync + 'static + HttpBody,
{
-
let Ok(ConnectInfo(info)) = req.extract_parts::<ConnectInfo<SocketAddr>>().await else {
return next.run(req).await
};
- console::log(info.ip(), req.method().clone(), req.uri().clone(), None, None).await;
+ console::log(
+ info.ip(),
+ req.method().clone(),
+ req.uri().clone(),
+ None,
+ None,
+ )
+ .await;
next.run(req).await
}
@@ -42,13 +62,14 @@ async fn not_found() -> Response {
#[tokio::main]
async fn main() {
-
let fmt_layer = tracing_subscriber::fmt::layer();
- tracing_subscriber::registry()
+ tracing_subscriber::registry()
.with(
- fmt_layer.with_filter(LevelFilter::TRACE).with_filter(filter_fn(|metadata| {
- metadata.target().starts_with("xssbook")
- }))
+ fmt_layer
+ .with_filter(LevelFilter::TRACE)
+ .with_filter(filter_fn(|metadata| {
+ metadata.target().starts_with("xssbook")
+ })),
)
.init();
@@ -58,17 +79,23 @@ async fn main() {
};
let app = Router::new()
- .fallback(not_found)
- .nest("/", pages::router())
- .layer(middleware::from_fn(log))
- .layer(middleware::from_fn(serve))
- .nest("/api/auth", auth::router()
- .layer(Extension(RouterURI("/api/auth")))
- ).nest("/api/users", users::router()
- .layer(Extension(RouterURI("/api/users")))
- ).nest("/api/posts", posts::router()
- .layer(Extension(RouterURI("/api/posts")))
- ).layer(CookieManagerLayer::new());
+ .fallback(not_found)
+ .nest("/", pages::router())
+ .layer(middleware::from_fn(log))
+ .layer(middleware::from_fn(serve))
+ .nest(
+ "/api/auth",
+ auth::router().layer(Extension(RouterURI("/api/auth"))),
+ )
+ .nest(
+ "/api/users",
+ users::router().layer(Extension(RouterURI("/api/users"))),
+ )
+ .nest(
+ "/api/posts",
+ posts::router().layer(Extension(RouterURI("/api/posts"))),
+ )
+ .layer(CookieManagerLayer::new());
let Ok(addr) = "[::]:8080".parse::<std::net::SocketAddr>() else {
error!("Failed to parse port binding");
@@ -76,10 +103,9 @@ async fn main() {
};
info!("listening on {}", addr);
-
+
axum::Server::bind(&addr)
.serve(app.into_make_service_with_connect_info::<SocketAddr>())
.await
.unwrap_or(());
-
}