New mix tasks for controlling user confirmation status and sending confirmation mails
[akkoma] / lib / pleroma / web / media_proxy / invalidation.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.MediaProxy.Invalidation do
6 @moduledoc false
7
8 @callback purge(list(String.t()), Keyword.t()) :: {:ok, list(String.t())} | {:error, String.t()}
9
10 alias Pleroma.Config
11 alias Pleroma.Web.MediaProxy
12
13 @spec enabled?() :: boolean()
14 def enabled?, do: Config.get([:media_proxy, :invalidation, :enabled])
15
16 @spec purge(list(String.t()) | String.t()) :: {:ok, list(String.t())} | {:error, String.t()}
17 def purge(urls) do
18 prepared_urls = prepare_urls(urls)
19
20 if enabled?() do
21 do_purge(prepared_urls)
22 else
23 {:ok, prepared_urls}
24 end
25 end
26
27 defp do_purge(urls) do
28 provider = Config.get([:media_proxy, :invalidation, :provider])
29 options = Config.get(provider)
30 provider.purge(urls, options)
31 end
32
33 def prepare_urls(urls) do
34 urls
35 |> List.wrap()
36 |> Enum.map(&MediaProxy.url/1)
37 end
38 end