[#2497] Adjusted media proxy preview invalidation. Allowed client-side caching for media preview. Adjusted prewarmer to fetch only proxiable URIs.

Removed :preview pool in favor of existing :media one. Misc. refactoring.
This commit is contained in:
Ivan Tashkinov 2020-09-05 20:19:09 +03:00
commit f170d47130
7 changed files with 34 additions and 32 deletions

View file

@ -12,23 +12,28 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do
require Logger
@options [
@adapter_options [
pool: :media
]
def perform(:prefetch, url) do
Logger.debug("Prefetching #{inspect(url)}")
# Fetching only proxiable resources
if MediaProxy.enabled?() and MediaProxy.url_proxiable?(url) do
# If preview proxy is enabled, it'll also hit media proxy (so we're caching both requests)
prefetch_url = MediaProxy.preview_url(url)
opts =
if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do
Keyword.put(@options, :recv_timeout, 10_000)
else
@options
end
Logger.debug("Prefetching #{inspect(url)} as #{inspect(prefetch_url)}")
url
|> MediaProxy.preview_url()
|> HTTP.get([], adapter: opts)
HTTP.get(prefetch_url, [], adapter: adapter_options())
end
end
defp adapter_options do
if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do
Keyword.put(@adapter_options, :recv_timeout, 10_000)
else
@adapter_options
end
end
def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) do