31d51577d1ab32a9fe852c38d82b830f21cfde2a
[anni] / lib / pleroma / ecto_type / activity_pub / object_validators / mime.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.MIME do
6   use Ecto.Type
7
8   require Pleroma.Constants
9
10   def type, do: :string
11
12   def cast(mime) when is_binary(mime) do
13     if mime =~ Pleroma.Constants.mime_regex() do
14       {:ok, mime}
15     else
16       {:ok, "application/octet-stream"}
17     end
18   end
19
20   def cast(_), do: :error
21
22   def dump(data), do: {:ok, data}
23
24   def load(data), do: {:ok, data}
25 end