@@ -7,11 +7,12 @@ defmodule Mobilizon.Web.Upload.Filter.AnalyzeMetadata do
|
||||
@moduledoc """
|
||||
Extracts metadata about the upload, such as width/height
|
||||
"""
|
||||
require Logger
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Filter
|
||||
|
||||
@behaviour Mobilizon.Web.Upload.Filter
|
||||
@behaviour Filter
|
||||
|
||||
@impl Filter
|
||||
@spec filter(Upload.t()) ::
|
||||
{:ok, :filtered, Upload.t()} | {:ok, :noop}
|
||||
def filter(%Upload{tempfile: file, content_type: "image" <> _} = upload) do
|
||||
@@ -23,6 +24,7 @@ defmodule Mobilizon.Web.Upload.Filter.AnalyzeMetadata do
|
||||
{:ok, :filtered, %Upload{upload | width: image.width, height: image.height}}
|
||||
rescue
|
||||
e in ErlangError ->
|
||||
require Logger
|
||||
Logger.warn("#{__MODULE__}: #{inspect(e)}")
|
||||
{:ok, :noop}
|
||||
end
|
||||
|
||||
@@ -4,9 +4,11 @@ defmodule Mobilizon.Web.Upload.Filter.BlurHash do
|
||||
"""
|
||||
require Logger
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Filter
|
||||
|
||||
@behaviour Mobilizon.Web.Upload.Filter
|
||||
@behaviour Filter
|
||||
|
||||
@impl Filter
|
||||
@spec filter(Upload.t()) ::
|
||||
{:ok, :filtered, Upload.t()} | {:ok, :noop}
|
||||
def filter(%Upload{tempfile: file, content_type: "image" <> _} = upload) do
|
||||
|
||||
@@ -7,9 +7,12 @@ defmodule Mobilizon.Web.Upload.Filter.Dedupe do
|
||||
@moduledoc """
|
||||
Names the file after its hash to avoid dedupes
|
||||
"""
|
||||
@behaviour Mobilizon.Web.Upload.Filter
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Filter
|
||||
|
||||
@behaviour Filter
|
||||
|
||||
@impl Filter
|
||||
@spec filter(Upload.t()) :: {:ok, :filtered, Upload.t()} | {:ok, :noop}
|
||||
def filter(%Upload{name: name, tempfile: tempfile} = upload) do
|
||||
extension = name |> String.split(".") |> List.last()
|
||||
|
||||
@@ -8,12 +8,14 @@ defmodule Mobilizon.Web.Upload.Filter.Exiftool do
|
||||
Also strips or replaces filesystem metadata e.g., timestamps.
|
||||
"""
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Filter
|
||||
|
||||
@behaviour Mobilizon.Web.Upload.Filter
|
||||
@behaviour Filter
|
||||
|
||||
@spec filter(Upload.t()) :: {:ok, :filtered | :noop} | {:error, String.t()}
|
||||
|
||||
# webp is not compatible with exiftool at this time
|
||||
@impl Filter
|
||||
def filter(%Upload{content_type: "image/webp"}), do: {:ok, :noop}
|
||||
|
||||
def filter(%Upload{tempfile: file, content_type: "image" <> _}) do
|
||||
|
||||
@@ -8,13 +8,15 @@ defmodule Mobilizon.Web.Upload.Filter.Mogrify do
|
||||
Handle mogrify transformations
|
||||
"""
|
||||
|
||||
@behaviour Mobilizon.Web.Upload.Filter
|
||||
|
||||
alias Mobilizon.Config
|
||||
alias Mobilizon.Web.Upload.Filter
|
||||
|
||||
@behaviour Filter
|
||||
|
||||
@type conversion :: action :: String.t() | {action :: String.t(), opts :: String.t()}
|
||||
@type conversions :: conversion() | [conversion()]
|
||||
|
||||
@impl Filter
|
||||
@spec filter(Mobilizon.Web.Upload.t()) :: {:ok, :filtered | :noop} | {:error, String.t()}
|
||||
def filter(%Mobilizon.Web.Upload{tempfile: file, content_type: "image" <> _}) do
|
||||
do_filter(file, Config.get!([__MODULE__, :args]))
|
||||
|
||||
@@ -2,13 +2,13 @@ defmodule Mobilizon.Web.Upload.Filter.Optimize do
|
||||
@moduledoc """
|
||||
Handle media optimizations
|
||||
"""
|
||||
|
||||
@behaviour Mobilizon.Web.Upload.Filter
|
||||
|
||||
alias Mobilizon.Config
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Filter
|
||||
require Logger
|
||||
|
||||
@behaviour Filter
|
||||
|
||||
@default_optimizers [
|
||||
JpegOptim,
|
||||
PngQuant,
|
||||
@@ -18,6 +18,7 @@ defmodule Mobilizon.Web.Upload.Filter.Optimize do
|
||||
Cwebp
|
||||
]
|
||||
|
||||
@impl Filter
|
||||
@spec filter(Upload.t()) :: {:ok, :filtered | :noop} | {:error, :file_not_found}
|
||||
def filter(%Upload{tempfile: file, content_type: "image" <> _}) do
|
||||
optimizers = Config.get([__MODULE__, :optimizers], @default_optimizers)
|
||||
|
||||
@@ -5,12 +5,15 @@ defmodule Mobilizon.Web.Upload.Filter.Resize do
|
||||
This filter requires `Mobilizon.Web.Upload.Filter.AnalyzeMetadata` to be performed before.
|
||||
"""
|
||||
|
||||
@behaviour Mobilizon.Web.Upload.Filter
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Filter
|
||||
|
||||
@behaviour Filter
|
||||
|
||||
@maximum_width 1_920
|
||||
@maximum_height 1_080
|
||||
|
||||
@impl Filter
|
||||
@spec filter(Upload.t()) :: {:ok, :filtered, Upload.t()} | {:ok, :noop}
|
||||
def filter(
|
||||
%Upload{
|
||||
|
||||
@@ -8,17 +8,18 @@ defmodule Mobilizon.Web.Upload.Uploader.Local do
|
||||
Local uploader for files
|
||||
"""
|
||||
|
||||
@behaviour Mobilizon.Web.Upload.Uploader
|
||||
|
||||
alias Mobilizon.Config
|
||||
alias Mobilizon.Web.Upload
|
||||
alias Mobilizon.Web.Upload.Uploader
|
||||
|
||||
@impl true
|
||||
@behaviour Uploader
|
||||
|
||||
@impl Uploader
|
||||
def get_file(_) do
|
||||
{:ok, {:static_dir, upload_path()}}
|
||||
end
|
||||
|
||||
@impl true
|
||||
@impl Uploader
|
||||
@spec put_file(Upload.t()) ::
|
||||
:ok | {:ok, {:file, String.t()}} | {:error, :tempfile_no_longer_exists}
|
||||
def put_file(%Upload{path: initial_path, tempfile: tempfile}) do
|
||||
@@ -38,7 +39,7 @@ defmodule Mobilizon.Web.Upload.Uploader.Local do
|
||||
end
|
||||
end
|
||||
|
||||
@impl true
|
||||
@impl Uploader
|
||||
@spec remove_file(String.t()) ::
|
||||
{:ok, {:file, String.t()}}
|
||||
| {:error, :folder_not_empty}
|
||||
|
||||
@@ -3,7 +3,7 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
|
||||
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Addresses.Address
|
||||
alias Mobilizon.Events.{Event, EventOptions, Participant, ParticipantRole}
|
||||
alias Mobilizon.Events.{Event, EventOptions, Participant}
|
||||
alias Mobilizon.Posts.Post
|
||||
alias Mobilizon.Web.Endpoint
|
||||
alias Mobilizon.Web.JsonLD.ObjectView
|
||||
@@ -166,7 +166,7 @@ defmodule Mobilizon.Web.JsonLD.ObjectView do
|
||||
end
|
||||
end
|
||||
|
||||
@spec reservation_status(ParticipantRole.t()) :: String.t()
|
||||
@spec reservation_status(atom()) :: String.t()
|
||||
defp reservation_status(:rejected), do: "https://schema.org/ReservationCancelled"
|
||||
defp reservation_status(:not_confirmed), do: "https://schema.org/ReservationPending"
|
||||
defp reservation_status(:not_approved), do: "https://schema.org/ReservationHold"
|
||||
|
||||
Reference in New Issue
Block a user