Merge branch 'develop' into feld-2168-media-preview-proxy
[akkoma] / lib / pleroma / web / media_proxy / media_proxy_controller.ex
index 5513432f0bad9b6da3351523bd93cc9a91fb541d..d465ce8d10e530b036bbf789e986ffdc3bf7bcab 100644 (file)
@@ -65,25 +65,34 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
     end
   end
 
+  defp handle_preview("image/gif" = _content_type, conn, url) do
+    mediaproxy_url = url |> MediaProxy.url()
+
+    redirect(conn, external: mediaproxy_url)
+  end
+
   defp handle_preview("image/" <> _ = _content_type, conn, url) do
-    handle_image_or_video_preview(conn, url)
+    handle_image_preview(conn, url)
   end
 
   defp handle_preview("video/" <> _ = _content_type, conn, url) do
-    handle_image_or_video_preview(conn, url)
+    mediaproxy_url = url |> MediaProxy.url()
+
+    redirect(conn, external: mediaproxy_url)
   end
 
   defp handle_preview(content_type, conn, _url) do
     send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.")
   end
 
-  defp handle_image_or_video_preview(%{params: params} = conn, url) do
+  defp handle_image_preview(%{params: params} = conn, url) do
+    quality = Config.get!([:media_preview_proxy, :image_quality])
+
     with {thumbnail_max_width, thumbnail_max_height} <- thumbnail_max_dimensions(params),
-         media_proxy_url <- MediaProxy.url(url),
          {:ok, thumbnail_binary} <-
-           MediaHelper.ffmpeg_resize(
-             media_proxy_url,
-             %{max_width: thumbnail_max_width, max_height: thumbnail_max_height}
+           MediaHelper.image_resize(
+             url,
+             %{max_width: thumbnail_max_width, max_height: thumbnail_max_height, quality: quality}
            ) do
       conn
       |> put_resp_header("content-type", "image/jpeg")