Return error on too much data
authorMegaBrutal <code+git@megabrutal.com>
Sat, 25 Jun 2022 23:30:00 +0000 (01:30 +0200)
committerMegaBrutal <code+git@megabrutal.com>
Sat, 25 Jun 2022 23:30:00 +0000 (01:30 +0200)
src/main.rs

index f46e88f270a02db8b774841e53ab7657540bffcf..c9c48b8338d13255985ec58eaba7af688ffb1f96 100644 (file)
@@ -11,6 +11,7 @@ use actix_web::http::StatusCode;
 use image::{ImageBuffer, ColorType, Rgb, RgbImage, write_buffer_with_format};
 use image::ImageOutputFormat::Png;
 use image::imageops::{FilterType, resize};
+use image::error::{LimitError, LimitErrorKind};
 
 
 #[derive(Debug)]
@@ -28,7 +29,7 @@ impl ResponseError for ImageError {
     }
 
     fn error_response(&self) -> HttpResponse<BoxBody> {
-        HttpResponse::InternalServerError().finish()
+        HttpResponse::InternalServerError().body(format!("{}\n", &self))
     }
 }
 
@@ -74,7 +75,7 @@ fn make_png(dim_x: u32, dim_y: u32, scale: u32, data: &mut dyn Iterator<Item = u
     let mut pixels = img.pixels_mut();
 
     for sp in ToRgbIter::new(data) {
-        let mut dp = pixels.next().unwrap();
+        let mut dp = pixels.next().ok_or(ImageError(image::ImageError::Limits(LimitError::from_kind(LimitErrorKind::DimensionError))))?;
         println!("{:?}", sp);
         dp.0 = sp.0;
     }