Skip to content

Commit 0262a76

Browse files
committed
Pass returned error to controllers internal_server_error method
1 parent 359e2e4 commit 0262a76

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

src/lib.rs

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -361,19 +361,25 @@ pub async fn route_request<'a>(
361361
let res = if let Some(route) = routes.iter().find(|route| **route == RawRoute::new(path)) {
362362
let params = route.extract_params(path);
363363
let controller = route.controller.clone();
364-
match method {
365-
"GET" => controller.get(req, params),
366-
"HEAD" => controller.head(req, params),
367-
"POST" => controller.post(req, params),
368-
"PUT" => controller.put(req, params),
369-
"DELETE" => controller.delete(req, params),
370-
"CONNECT" => controller.connect(req, params),
371-
"OPTIONS" => controller.options(req, params),
372-
"TRACE" => controller.trace(req, params),
373-
"PATCH" => controller.patch(req, params),
374-
_ => controller.bad_request(anyhow::Error::msg("unsupported HTTP method")),
364+
let res = match method {
365+
"GET" => controller.clone().get(req, params),
366+
"HEAD" => controller.clone().head(req, params),
367+
"POST" => controller.clone().post(req, params),
368+
"PUT" => controller.clone().put(req, params),
369+
"DELETE" => controller.clone().delete(req, params),
370+
"CONNECT" => controller.clone().connect(req, params),
371+
"OPTIONS" => controller.clone().options(req, params),
372+
"TRACE" => controller.clone().trace(req, params),
373+
"PATCH" => controller.clone().patch(req, params),
374+
_ => controller.clone().bad_request(anyhow::Error::msg("unsupported HTTP method")),
375+
}
376+
.await;
377+
378+
if let Err(e) = res {
379+
Ok(controller.clone().internal_server_error(e).await?)
380+
} else {
381+
res
375382
}
376-
.await
377383
} else {
378384
not_found().await
379385
};

0 commit comments

Comments
 (0)