chiark / gitweb /
Revert "resource leaf routing: Attempt via impl FromRequest"
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 28 Mar 2022 00:52:11 +0000 (01:52 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 28 Mar 2022 00:52:11 +0000 (01:52 +0100)
This reverts commit 383fab0156489a705901ba06580c60215dc313c6.

daemon/main.rs

index 9e59add478b0d76e93d66ee83c66e561d63991e9..d19f0a289a39abe7af524c2e32df9851046dfde6 100644 (file)
@@ -129,23 +129,6 @@ struct CheckedResourceLeaf {
 #[error("not a valid resource path")]
 struct UnknownResource;
 
-impl ResponseError for UnknownResource {
-  fn status_code(&self) -> StatusCode { StatusCode::NOT_FOUND }
-  fn error_response(&self) -> HttpResponse<BoxBody> { error_response(self) }
-}  
-
-// Magically looks for "{leaf}"
-impl FromRequest for CheckedResourceLeaf {
-  type Error = UnknownResource;
-  type Future = future::Ready<Result<CheckedResourceLeaf, UnknownResource>>;
-  fn from_request(req: &HttpRequest, _: &mut actix_web::dev::Payload)
-                  -> Self::Future {
-    future::ready(
-      req.match_info().query("leaf").parse()
-    )
-  }
-}
-
 impl FromStr for CheckedResourceLeaf {
   type Err = UnknownResource;
   fn from_str(s: &str) -> Result<Self, Self::Err> {
@@ -315,7 +298,8 @@ async fn updates_route(query: Query<UpdatesParams>) -> impl Responder {
 
 #[route("/_/{leaf}", method="GET", method="HEAD")]
 #[throws(io::Error)]
-async fn resource(leaf: CheckedResourceLeaf) -> impl Responder {
+async fn resource(leaf: Path<Parse<CheckedResourceLeaf>>) -> impl Responder {
+  let leaf = leaf.into_inner().0;
   let path = match leaf.locn {
     RL::Main => format!("{}/{}", config().template_dir, leaf.safe_leaf),
     RL::Wasm(s) => format!("{}/{}", config().wasm_dir, s),