[#2497] Media preview proxy: redirecting to media proxy url in case of preview error...
authorIvan Tashkinov <ivantashkinov@gmail.com>
Sat, 12 Sep 2020 07:33:42 +0000 (10:33 +0300)
committerIvan Tashkinov <ivantashkinov@gmail.com>
Sat, 12 Sep 2020 07:33:42 +0000 (10:33 +0300)
lib/pleroma/web/media_proxy/media_proxy_controller.ex

index ff7fd240977cc853603f089e14779f18054a6608..08d62a51a1955d8b86c1842465debf7ef4f66ddf 100644 (file)
@@ -91,8 +91,8 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
     handle_video_preview(conn, media_proxy_url)
   end
 
-  defp handle_preview(content_type, conn, _media_proxy_url) do
-    send_resp(conn, :unprocessable_entity, "Unsupported content type: #{content_type}.")
+  defp handle_preview(_unsupported_content_type, conn, media_proxy_url) do
+    fallback_on_preview_error(conn, media_proxy_url)
   end
 
   defp handle_png_preview(conn, media_proxy_url) do
@@ -114,7 +114,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
       |> send_resp(200, thumbnail_binary)
     else
       _ ->
-        send_resp(conn, :failed_dependency, "Can't handle preview.")
+        fallback_on_preview_error(conn, media_proxy_url)
     end
   end
 
@@ -132,7 +132,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
       |> send_resp(200, thumbnail_binary)
     else
       _ ->
-        send_resp(conn, :failed_dependency, "Can't handle preview.")
+        fallback_on_preview_error(conn, media_proxy_url)
     end
   end
 
@@ -144,10 +144,14 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
       |> send_resp(200, thumbnail_binary)
     else
       _ ->
-        send_resp(conn, :failed_dependency, "Can't handle preview.")
+        fallback_on_preview_error(conn, media_proxy_url)
     end
   end
 
+  defp fallback_on_preview_error(conn, media_proxy_url) do
+    redirect(conn, external: media_proxy_url)
+  end
+
   defp put_preview_response_headers(
          conn,
          [content_type, filename] = _content_info \\ ["image/jpeg", "preview.jpg"]