logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
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:

MCHANGELOG.md2+-
Alib/pleroma/upload/filter/analyze_metadata.ex45+++++++++++++++++++++++++++++++++++++++++++++
Dlib/pleroma/upload/filter/set_meta.ex45---------------------------------------------
Atest/pleroma/upload/filter/analyze_metadata_test.exs19+++++++++++++++++++
Dtest/pleroma/upload/filter/set_meta_test.exs19-------------------
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