]> Untitled Git - lemmy.git/commitdiff
Altering lemmy pict-rs-v2 forwarding.
authorDessalines <tyhou13@gmx.com>
Wed, 14 Oct 2020 16:48:10 +0000 (11:48 -0500)
committerDessalines <tyhou13@gmx.com>
Wed, 14 Oct 2020 16:48:10 +0000 (11:48 -0500)
ansible/templates/docker-compose.yml
docker/federation/docker-compose.yml
src/routes/images.rs

index ca20f3ff8d4c759e1cccf7af67bd9b7125150ad2..ca7b0383f8bd9c27ff5682721e401693c5dcf1bb 100644 (file)
@@ -37,7 +37,7 @@ services:
     restart: always
 
   pictrs:
-    image: asonix/pictrs:amd64-v0.1.0-r9
+    image: asonix/pictrs:v0.2.2-r0
     user: 991:991
     ports:
       - "127.0.0.1:8537:8080"
index ba085855beacf7cdf24899a10cf7f298e8b696db..b0abb9720a365733db10edbf0c7e0e3ad536cb4b 100644 (file)
@@ -23,7 +23,7 @@ services:
 
   pictrs:
     restart: always
-    image: asonix/pictrs:v0.1.13-r0
+    image: asonix/pictrs:v0.2.2-r0
     user: 991:991
     volumes:
       - ./volumes/pictrs_alpha:/mnt
index 2521d0b66df7adfa87ffe09328654a11fe8e58eb..4b5ed98119e7852cd339239aa5b0666959fe8428 100644 (file)
@@ -18,10 +18,8 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) {
         .wrap(rate_limit.image())
         .route(web::post().to(upload)),
     )
+    // This has optional query params: /image/{filename}?format=jpg&thumbnail=256
     .service(web::resource("/pictrs/image/{filename}").route(web::get().to(full_res)))
-    .service(
-      web::resource("/pictrs/image/thumbnail{size}/{filename}").route(web::get().to(thumbnail)),
-    )
     .service(web::resource("/pictrs/image/delete/{token}/{filename}").route(web::get().to(delete)));
 }
 
@@ -37,6 +35,12 @@ pub struct Images {
   files: Option<Vec<Image>>,
 }
 
+#[derive(Deserialize)]
+pub struct PictrsParams {
+  format: Option<String>,
+  thumbnail: Option<String>,
+}
+
 async fn upload(
   req: HttpRequest,
   body: web::Payload,
@@ -59,31 +63,31 @@ async fn upload(
 
 async fn full_res(
   filename: web::Path<String>,
+  web::Query(params): web::Query<PictrsParams>,
   req: HttpRequest,
   client: web::Data<Client>,
 ) -> Result<HttpResponse, Error> {
-  let url = format!(
-    "{}/image/original/{}",
-    Settings::get().pictrs_url,
-    &filename.into_inner()
-  );
-  image(url, req, client).await
-}
-
-async fn thumbnail(
-  parts: web::Path<(u64, String)>,
-  req: HttpRequest,
-  client: web::Data<Client>,
-) -> Result<HttpResponse, Error> {
-  let (size, file) = parts.into_inner();
-
-  let url = format!(
-    "{}/image/process.{}?src={}&thumbnail={}",
-    Settings::get().pictrs_url,
-    "jpg", // this can be changed to png or webp
-    &file,
-    size,
-  );
+  let name = &filename.into_inner();
+
+  // If there are no query params, the URL is original
+  let url = if params.format.is_none() && params.thumbnail.is_none() {
+    format!("{}/image/original/{}", Settings::get().pictrs_url, name,)
+  } else {
+    // Use jpg as a default when none is given
+    let format = params.format.unwrap_or("jpg".to_string());
+
+    let mut url = format!(
+      "{}/image/process.{}?src={}",
+      Settings::get().pictrs_url,
+      format,
+      name,
+    );
+
+    if let Some(size) = params.thumbnail {
+      url = format!("{}&thumbnail={}", url, size,);
+    }
+    url
+  };
 
   image(url, req, client).await
 }