commit: 9b6b5ac196d9a2defb74902bffad67505b0de5c5
parent bcf6efce15f76f4796ee51639ea0f8d0299efa0b
Author: Mark Felder <feld@feld.me>
Date: Tue, 18 May 2021 15:33:33 -0500
Rename upload filter to AnalyzeMetadata
Diffstat:
5 files changed, 65 insertions(+), 65 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
@@ -15,7 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- MRF (`FollowBotPolicy`): New MRF Policy which makes a designated local Bot account attempt to follow all users in public Notes received by your instance. Users who require approving follower requests or have #nobot in their profile are excluded.
- Return OAuth token `id` (primary key) in POST `/oauth/token`.
-- `SetMeta` upload filter for extracting attachment dimensions.
+- `AnalyzeMetadata` upload filter for extracting attachment dimensions.
- Attachment dimensions are federated when available.
### Fixed
diff --git a/lib/pleroma/upload/filter/analyze_metadata.ex b/lib/pleroma/upload/filter/analyze_metadata.ex
@@ -0,0 +1,45 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Upload.Filter.AnalyzeMetadata do
+ @moduledoc """
+ Extracts metadata about the upload, such as width/height
+ """
+ require Logger
+
+ @behaviour Pleroma.Upload.Filter
+
+ @spec filter(Pleroma.Upload.t()) ::
+ {:ok, :filtered, Pleroma.Upload.t()} | {:ok, :noop} | {:error, String.t()}
+ def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _} = upload) do
+ try do
+ image =
+ file
+ |> Mogrify.open()
+ |> Mogrify.verbose()
+
+ upload =
+ upload
+ |> Map.put(:width, image.width)
+ |> Map.put(:height, image.height)
+ |> Map.put(:blurhash, get_blurhash(file))
+
+ {:ok, :filtered, upload}
+ rescue
+ e in ErlangError ->
+ Logger.warn("#{__MODULE__}: #{inspect(e)}")
+ {:ok, :noop}
+ end
+ end
+
+ def filter(_), do: {:ok, :noop}
+
+ defp get_blurhash(file) do
+ with {:ok, blurhash} <- :eblurhash.magick(file) do
+ blurhash
+ else
+ _ -> nil
+ end
+ end
+end
diff --git a/lib/pleroma/upload/filter/set_meta.ex b/lib/pleroma/upload/filter/set_meta.ex
@@ -1,45 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Upload.Filter.SetMeta do
- @moduledoc """
- Extracts metadata about the upload, such as width/height
- """
- require Logger
-
- @behaviour Pleroma.Upload.Filter
-
- @spec filter(Pleroma.Upload.t()) ::
- {:ok, :filtered, Pleroma.Upload.t()} | {:ok, :noop} | {:error, String.t()}
- def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _} = upload) do
- try do
- image =
- file
- |> Mogrify.open()
- |> Mogrify.verbose()
-
- upload =
- upload
- |> Map.put(:width, image.width)
- |> Map.put(:height, image.height)
- |> Map.put(:blurhash, get_blurhash(file))
-
- {:ok, :filtered, upload}
- rescue
- e in ErlangError ->
- Logger.warn("#{__MODULE__}: #{inspect(e)}")
- {:ok, :noop}
- end
- end
-
- def filter(_), do: {:ok, :noop}
-
- defp get_blurhash(file) do
- with {:ok, blurhash} <- :eblurhash.magick(file) do
- blurhash
- else
- _ -> nil
- end
- end
-end
diff --git a/test/pleroma/upload/filter/analyze_metadata_test.exs b/test/pleroma/upload/filter/analyze_metadata_test.exs
@@ -0,0 +1,19 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Upload.Filter.AnalyzeMetadataTest do
+ use Pleroma.DataCase, async: true
+ alias Pleroma.Upload.Filter.AnalyzeMetadata
+
+ test "adds the image dimensions" do
+ upload = %Pleroma.Upload{
+ name: "an… image.jpg",
+ content_type: "image/jpeg",
+ path: Path.absname("test/fixtures/image.jpg"),
+ tempfile: Path.absname("test/fixtures/image.jpg")
+ }
+
+ assert {:ok, :filtered, %{width: 1024, height: 768}} = AnalyzeMetadata.filter(upload)
+ end
+end
diff --git a/test/pleroma/upload/filter/set_meta_test.exs b/test/pleroma/upload/filter/set_meta_test.exs
@@ -1,19 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Upload.Filter.SetMetaTest do
- use Pleroma.DataCase, async: true
- alias Pleroma.Upload.Filter.SetMeta
-
- test "adds the image dimensions" do
- upload = %Pleroma.Upload{
- name: "an… image.jpg",
- content_type: "image/jpeg",
- path: Path.absname("test/fixtures/image.jpg"),
- tempfile: Path.absname("test/fixtures/image.jpg")
- }
-
- assert {:ok, :filtered, %{width: 1024, height: 768}} = SetMeta.filter(upload)
- end
-end