From 0a839d51a7adb034d6514ea647d90546c829813d Mon Sep 17 00:00:00 2001
From: Ivan Tashkinov <ivantashkinov@gmail.com>
Date: Mon, 31 Aug 2020 13:08:50 +0300
Subject: [PATCH] [#2497] Added Cache-Control response header for media proxy
 preview endpoint.

---
 .../web/media_proxy/media_proxy_controller.ex    | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex
index 94fae6cac..2afcd861a 100644
--- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex
+++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex
@@ -107,8 +107,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
              }
            ) do
       conn
-      |> put_resp_header("content-type", "image/png")
-      |> put_resp_header("content-disposition", "inline; filename=\"preview.png\"")
+      |> put_preview_response_headers()
       |> send_resp(200, thumbnail_binary)
     else
       _ ->
@@ -126,8 +125,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
              %{max_width: thumbnail_max_width, max_height: thumbnail_max_height, quality: quality}
            ) do
       conn
-      |> put_resp_header("content-type", "image/jpeg")
-      |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"")
+      |> put_preview_response_headers()
       |> send_resp(200, thumbnail_binary)
     else
       _ ->
@@ -139,8 +137,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
     with {:ok, thumbnail_binary} <-
            MediaHelper.video_framegrab(url) do
       conn
-      |> put_resp_header("content-type", "image/jpeg")
-      |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"")
+      |> put_preview_response_headers()
       |> send_resp(200, thumbnail_binary)
     else
       _ ->
@@ -148,6 +145,13 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
     end
   end
 
+  defp put_preview_response_headers(conn) do
+    conn
+    |> put_resp_header("content-type", "image/jpeg")
+    |> put_resp_header("content-disposition", "inline; filename=\"preview.jpg\"")
+    |> put_resp_header("cache-control", "max-age=0, private, must-revalidate")
+  end
+
   defp thumbnail_max_dimensions(params) do
     config = Config.get([:media_preview_proxy], [])