Return dimensions of existing canvas
authorMegaBrutal <code+git@megabrutal.com>
Mon, 18 Jul 2022 00:20:00 +0000 (02:20 +0200)
committerMegaBrutal <code+git@megabrutal.com>
Mon, 18 Jul 2022 00:20:00 +0000 (02:20 +0200)
src/main.rs

index 6e06fabc7f90c8b124f08ac2df26e9bf8a6a8b66..7353da5665df4f873b89fb566f707861cf10c81d 100644 (file)
@@ -44,7 +44,7 @@ impl ResponseError for ImageError {
 #[derive(Debug)]
 enum CanvasError {
     NotExists,
-    DimensionMismatch,
+    DimensionMismatch((u32, u32)),
     ImageError(ImageError)
 }
 
@@ -58,7 +58,7 @@ impl ResponseError for CanvasError {
     fn status_code(&self) -> StatusCode {
         match &self {
             CanvasError::NotExists => StatusCode::NOT_FOUND,
-            CanvasError::DimensionMismatch => StatusCode::BAD_REQUEST,
+            CanvasError::DimensionMismatch(_) => StatusCode::BAD_REQUEST,
             CanvasError::ImageError(e) => e.status_code()
         }
     }
@@ -66,7 +66,8 @@ impl ResponseError for CanvasError {
     fn error_response(&self) -> HttpResponse<BoxBody> {
         match &self {
             CanvasError::NotExists => HttpResponse::NotFound().body("Canvas does not exist."),
-            CanvasError::DimensionMismatch => HttpResponse::BadRequest().body("Supplied dimensions don't much the dimensions of existing canvas."),
+            CanvasError::DimensionMismatch(dim) =>
+                HttpResponse::BadRequest().body(format!("Supplied dimensions don't match the dimensions of existing canvas {:?}.", dim)),
             CanvasError::ImageError(e) => e.error_response()
         }
     }
@@ -189,8 +190,7 @@ fn apply_to_canvas<'a, F>(f: F, canvas_option: &'a mut Option<Canvas>, dimension
                     Ok(canvas)
                 }
                 else {
-                    _ = canvas_option.insert(canvas);
-                    Err(CanvasError::DimensionMismatch)
+                    Err(CanvasError::DimensionMismatch(canvas_option.insert(canvas).img.dimensions()))
                 }
             },
             None =>