Merge branch 'features/admin-api-user-views' into 'develop'
[akkoma] / lib / pleroma / upload / filter / anonymize_filename.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Upload.Filter.AnonymizeFilename do
6 @moduledoc """
7 Replaces the original filename with a pre-defined text or randomly generated string.
8
9 Should be used after `Pleroma.Upload.Filter.Dedupe`.
10 """
11 @behaviour Pleroma.Upload.Filter
12
13 def filter(upload) do
14 extension = List.last(String.split(upload.name, "."))
15 name = Pleroma.Config.get([__MODULE__, :text], random(extension))
16 {:ok, %Pleroma.Upload{upload | name: name}}
17 end
18
19 defp random(extension) do
20 string =
21 10
22 |> :crypto.strong_rand_bytes()
23 |> Base.url_encode64(padding: false)
24
25 string <> "." <> extension
26 end
27 end