1 defmodule Pleroma.Upload.Filter do
3 Upload Filter behaviour
5 This behaviour allows to run filtering actions just before a file is uploaded. This allows to:
7 * morph in place the temporary file
8 * change any field of a `Pleroma.Upload` struct
9 * cancel/stop the upload
14 @callback filter(Pleroma.Upload.t()) :: :ok | {:ok, Pleroma.Upload.t()} | {:error, any()}
16 @spec filter([module()], Pleroma.Upload.t()) :: {:ok, Pleroma.Upload.t()} | {:error, any()}
18 def filter([], upload) do
22 def filter([filter | rest], upload) do
23 case filter.filter(upload) do
31 Logger.error("#{__MODULE__}: Filter #{filter} failed: #{inspect(error)}")