Merge branch 'anonymize-filter-text' into 'develop'
[akkoma] / lib / pleroma / upload / filter / anonymize_filename.ex
1 defmodule Pleroma.Upload.Filter.AnonymizeFilename do
2 @moduledoc """
3 Replaces the original filename with a pre-defined text or randomly generated string.
4
5 Should be used after `Pleroma.Upload.Filter.Dedupe`.
6 """
7 @behaviour Pleroma.Upload.Filter
8
9 def filter(upload) do
10 extension = List.last(String.split(upload.name, "."))
11 name = Pleroma.Config.get([__MODULE__, :text], random(extension))
12 {:ok, %Pleroma.Upload{upload | name: name}}
13 end
14
15 defp random(extension) do
16 string =
17 10
18 |> :crypto.strong_rand_bytes()
19 |> Base.url_encode64(padding: false)
20
21 string <> "." <> extension
22 end
23 end