diff options
author | Mark Felder <feld@feld.me> | 2023-05-29 15:46:49 -0400 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2023-05-29 15:49:04 -0400 |
commit | 9caa0b0be1feffb20b3eaccb48298de572d32393 (patch) | |
tree | f6d1dc1ec63343449122fe3c4930c1e83ce6a7b2 /lib | |
parent | 31ec5cd35eece97aa1213c401b40d3ab83689ea9 (diff) | |
download | pleroma-9caa0b0be1feffb20b3eaccb48298de572d32393.tar.gz pleroma-9caa0b0be1feffb20b3eaccb48298de572d32393.zip |
Add OnlyMedia Upload Filter to simplify restricting uploads to audio, image, and video types
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/upload/filter.ex | 6 | ||||
-rw-r--r-- | lib/pleroma/upload/filter/only_media.ex | 20 |
2 files changed, 23 insertions, 3 deletions
diff --git a/lib/pleroma/upload/filter.ex b/lib/pleroma/upload/filter.ex index 717f06621..809bc6e70 100644 --- a/lib/pleroma/upload/filter.ex +++ b/lib/pleroma/upload/filter.ex @@ -38,9 +38,9 @@ defmodule Pleroma.Upload.Filter do {:ok, :noop} -> filter(rest, upload) - error -> - Logger.error("#{__MODULE__}: Filter #{filter} failed: #{inspect(error)}") - error + {:error, e} -> + Logger.error("#{__MODULE__}: Filter #{filter} failed: #{inspect(e)}") + {:error, e} end end end diff --git a/lib/pleroma/upload/filter/only_media.ex b/lib/pleroma/upload/filter/only_media.ex new file mode 100644 index 000000000..a9caeba67 --- /dev/null +++ b/lib/pleroma/upload/filter/only_media.ex @@ -0,0 +1,20 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Upload.Filter.OnlyMedia do + @behaviour Pleroma.Upload.Filter + alias Pleroma.Upload + + def filter(%Upload{content_type: content_type}) do + [type, _subtype] = String.split(content_type, "/") + + if type in ["image", "video", "audio"] do + {:ok, :noop} + else + {:error, "Disallowed content-type: #{content_type}"} + end + end + + def filter(_), do: {:ok, :noop} +end |