summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/main.rs b/src/main.rs
index ea459d9..3d69f36 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -11,13 +11,13 @@ use tokio::{
use crate::{
client::Client,
- handlers::{Handle, Handlers},
+ handler::{Handle, Handler},
request::Request,
- response::Response,
+ response::{Response, Status},
};
mod client;
-mod handlers;
+mod handler;
mod request;
mod response;
@@ -40,13 +40,13 @@ enum HandleError {
InvokeHandler(mlua::Error),
#[error("handler error: {0}")]
- Handler(#[from] handlers::Error),
+ Handler(#[from] handler::Error),
}
#[derive(Debug, thiserror::Error)]
enum ResponseError {
#[error("error reading request: {0}")]
- Request(client::Error),
+ Request(request::Error),
#[error("error sending response: {0}")]
Response(io::Error),
@@ -70,22 +70,19 @@ enum InitLuaError {
EvalConfig(mlua::Error),
}
-async fn handle<T: Clone + 'static>(
- handlers: Table,
- request: Request<T>,
-) -> Result<Response, HandleError> {
- let method = request.inner().method().as_str().to_string();
+async fn handle(handlers: Table, request: Request) -> Result<Response, HandleError> {
+ let method = request.method().to_string();
let function = handlers
.get::<Function>(method.as_str())
.map_err(HandleError::Function)?;
let handler = function
- .call::<Handlers>(request.clone())
+ .call::<Handler>(request.clone())
.map_err(HandleError::InvokeHandler)?;
match handler {
- Handlers::StaticFile(staticfile) => Ok(staticfile.handle(request).await?),
+ Handler::StaticFile(staticfile) => Ok(staticfile.handle(request).await?),
}
}
@@ -106,12 +103,9 @@ async fn response(handlers: Table, stream: TcpStream) -> Result<(), ResponseErro
Err(e) => {
eprintln!("failed to handle request: {e:?}");
- Response::new(
- http::Response::builder()
- .status(http::StatusCode::INTERNAL_SERVER_ERROR)
- .body(response::Body::Empty)
- .unwrap(),
- )
+ Response::builder()
+ .status(Status::InternalServerError)
+ .body(response::Body::Empty)
}
};