Implement /pdrop
authorMegaBrutal <code+git@megabrutal.com>
Mon, 18 Jul 2022 02:00:00 +0000 (04:00 +0200)
committerMegaBrutal <code+git@megabrutal.com>
Mon, 18 Jul 2022 02:00:00 +0000 (04:00 +0200)
src/main.rs

index e1c238a272a00a14dca9ac4819c72faca6c77b66..7a03c3ba220fd7d8c99a8e5f0731465e97c25772 100644 (file)
@@ -279,6 +279,18 @@ async fn img_pgen1(req: HttpRequest, path: web::Path<(u32, u32, u32)>, canvas1:
        .body(cursor.into_inner()))
 }
 
+#[get("/pdrop/{canvas_id}")]
+async fn pdrop(canvas_id: web::Path<u8>, canvas0: web::Data<Arc<Mutex<Canvas0>>>, canvas1: web::Data<Arc<Mutex<Canvas1>>>) -> Result<impl Responder> {
+    let canvas_id = canvas_id.into_inner();
+    match canvas_id {
+        0 => canvas0.lock().unwrap().0.take(),
+        1 => canvas1.lock().unwrap().0.take(),
+        _ => None
+    }.ok_or_else( || CanvasError::NotExists )?;
+    Ok(HttpResponse::build(StatusCode::OK)
+       .body(format!("Canvas {} dropped.", canvas_id)))
+}
+
 
 #[actix_web::main] // or #[tokio::main]
 async fn main() -> std::io::Result<()> {
@@ -292,6 +304,7 @@ async fn main() -> std::io::Result<()> {
             .service(img_gen1)
             .service(img_pgen0)
             .service(img_pgen1)
+            .service(pdrop)
             .app_data(web::Data::new(canvas0.clone()))
             .app_data(web::Data::new(canvas1.clone()))
     })