From: MegaBrutal <code+git@megabrutal.com>
Date: Mon, 18 Jul 2022 00:20:00 +0000 (+0200)
Subject: Return dimensions of existing canvas
X-Git-Url: http://git.megabrutal.com/?a=commitdiff_plain;h=db7be2ee3c0b60413dfb9bd9d657cf491a47d606;p=litoprism.git

Return dimensions of existing canvas
---

diff --git a/src/main.rs b/src/main.rs
index 6e06fab..7353da5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -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 =>