diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/media_proxy/invalidation.ex | 9 | ||||
-rw-r--r-- | lib/pleroma/web/media_proxy/invalidations/http.ex | 9 | ||||
-rw-r--r-- | lib/pleroma/web/media_proxy/invalidations/script.ex | 36 |
3 files changed, 30 insertions, 24 deletions
diff --git a/lib/pleroma/web/media_proxy/invalidation.ex b/lib/pleroma/web/media_proxy/invalidation.ex index c037ff13e..bd6618f0a 100644 --- a/lib/pleroma/web/media_proxy/invalidation.ex +++ b/lib/pleroma/web/media_proxy/invalidation.ex @@ -5,9 +5,10 @@ defmodule Pleroma.Web.MediaProxy.Invalidation do @moduledoc false - @callback purge(list(String.t()), map()) :: {:ok, String.t()} | {:error, String.t()} + @callback purge(list(String.t()), Keyword.t()) :: {:ok, String.t()} | {:error, String.t()} alias Pleroma.Config + alias Pleroma.Web.MediaProxy @spec purge(list(String.t())) :: {:ok, String.t()} | {:error, String.t()} def purge(urls) do @@ -19,7 +20,11 @@ defmodule Pleroma.Web.MediaProxy.Invalidation do defp do_purge(true, urls) do provider = Config.get([:media_proxy, :invalidation, :provider]) options = Config.get(provider) - provider.purge(urls, options) + + urls + |> List.wrap() + |> Enum.map(&MediaProxy.url(&1)) + |> provider.purge(options) end defp do_purge(_, _), do: :ok diff --git a/lib/pleroma/web/media_proxy/invalidations/http.ex b/lib/pleroma/web/media_proxy/invalidations/http.ex index eec95e7e0..725fddc04 100644 --- a/lib/pleroma/web/media_proxy/invalidations/http.ex +++ b/lib/pleroma/web/media_proxy/invalidations/http.ex @@ -10,15 +10,14 @@ defmodule Pleroma.Web.MediaProxy.Invalidation.Http do @impl Pleroma.Web.MediaProxy.Invalidation def purge(urls, opts) do - method = Map.get(opts, :method, :purge) - headers = Map.get(opts, :headers, []) - options = Map.get(opts, :options, []) + method = Keyword.get(opts, :method, :purge) + headers = Keyword.get(opts, :headers, []) + options = Keyword.get(opts, :options, []) Logger.debug("Running cache purge: #{inspect(urls)}") Enum.each(urls, fn url -> - with {:error, error} <- - do_purge(method, url |> Pleroma.Web.MediaProxy.url(), headers, options) do + with {:error, error} <- do_purge(method, url, headers, options) do Logger.error("Error while cache purge: url - #{url}, error: #{inspect(error)}") end end) diff --git a/lib/pleroma/web/media_proxy/invalidations/script.ex b/lib/pleroma/web/media_proxy/invalidations/script.ex index 6be782132..fbb0a2e52 100644 --- a/lib/pleroma/web/media_proxy/invalidations/script.ex +++ b/lib/pleroma/web/media_proxy/invalidations/script.ex @@ -10,32 +10,34 @@ defmodule Pleroma.Web.MediaProxy.Invalidation.Script do require Logger @impl Pleroma.Web.MediaProxy.Invalidation - def purge(urls, %{script_path: script_path} = _options) do + def purge(urls, opts) do args = urls |> List.wrap() |> Enum.uniq() |> Enum.join(" ") - path = Path.expand(script_path) - - Logger.debug("Running cache purge: #{inspect(urls)}, #{path}") - - case do_purge(path, [args]) do - {result, exit_status} when exit_status > 0 -> - Logger.error("Error while cache purge: #{inspect(result)}") - {:error, inspect(result)} - - _ -> - {:ok, "success"} - end + opts + |> Keyword.get(:script_path, nil) + |> do_purge([args]) + |> handle_error end - def purge(_, _), do: {:error, "not found script path"} - - defp do_purge(path, args) do + defp do_purge(script_path, args) when is_binary(script_path) do + path = Path.expand(script_path) + Logger.debug("Running cache purge: #{inspect(args)}, #{inspect(path)}") System.cmd(path, args) rescue - error -> {inspect(error), 1} + error -> error + end + + defp do_purge(_, _), do: {:error, "not found script path"} + + defp handle_error({_result, 0}), do: {:ok, "success"} + defp handle_error({:error, error}), do: handle_error(error) + + defp handle_error(error) do + Logger.error("Error while cache purge: #{inspect(error)}") + {:error, inspect(error)} end end |