4a11d4adcc
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
42 lines
824 B
Elixir
42 lines
824 B
Elixir
defmodule Mobilizon.Web.Upload.Filter.Optimize do
|
|
@moduledoc """
|
|
Handle picture optimizations
|
|
"""
|
|
|
|
@behaviour Mobilizon.Web.Upload.Filter
|
|
|
|
alias Mobilizon.Config
|
|
|
|
@default_optimizers [
|
|
JpegOptim,
|
|
PngQuant,
|
|
Optipng,
|
|
Svgo,
|
|
Gifsicle,
|
|
Cwebp
|
|
]
|
|
|
|
def filter(%Mobilizon.Web.Upload{tempfile: file, content_type: "image" <> _}) do
|
|
optimizers = Config.get([__MODULE__, :optimizers], @default_optimizers)
|
|
|
|
case ExOptimizer.optimize(file, deps: optimizers) do
|
|
{:ok, _res} ->
|
|
{:ok, :filtered}
|
|
|
|
{:error, err} ->
|
|
require Logger
|
|
|
|
Logger.warn(
|
|
"Unable to optimize file #{file}. The return from the process was #{inspect(err)}"
|
|
)
|
|
|
|
{:ok, :noop}
|
|
|
|
err ->
|
|
{:error, err}
|
|
end
|
|
end
|
|
|
|
def filter(_), do: {:ok, :noop}
|
|
end
|