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