diff options
author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-06-23 21:10:32 +0300 |
---|---|---|
committer | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-10-13 16:38:19 +0300 |
commit | 0374df1d12a4c28fac72be9b9c0545d318c10385 (patch) | |
tree | 41fbf0472c992ca06074f6e46ad299a90bfac73c /lib/pleroma/web/media_proxy/invalidation/script.ex | |
parent | fc7151a9c4cbd2fb122d717f54de4b30acffea36 (diff) | |
download | pleroma-0374df1d12a4c28fac72be9b9c0545d318c10385.tar.gz |
other files consistency
Diffstat (limited to 'lib/pleroma/web/media_proxy/invalidation/script.ex')
-rw-r--r-- | lib/pleroma/web/media_proxy/invalidation/script.ex | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/pleroma/web/media_proxy/invalidation/script.ex b/lib/pleroma/web/media_proxy/invalidation/script.ex new file mode 100644 index 000000000..d32ffc50b --- /dev/null +++ b/lib/pleroma/web/media_proxy/invalidation/script.ex @@ -0,0 +1,43 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.MediaProxy.Invalidation.Script do + @moduledoc false + + @behaviour Pleroma.Web.MediaProxy.Invalidation + + require Logger + + @impl Pleroma.Web.MediaProxy.Invalidation + def purge(urls, opts \\ []) do + args = + urls + |> List.wrap() + |> Enum.uniq() + |> Enum.join(" ") + + opts + |> Keyword.get(:script_path) + |> do_purge([args]) + |> handle_result(urls) + end + + 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 -> error + end + + defp do_purge(_, _), do: {:error, "not found script path"} + + defp handle_result({_result, 0}, urls), do: {:ok, urls} + defp handle_result({:error, error}, urls), do: handle_result(error, urls) + + defp handle_result(error, _) do + Logger.error("Error while cache purge: #{inspect(error)}") + {:error, inspect(error)} + end +end |