+ require Logger
+
+ alias Pleroma.Config
+
+ # The file name is re-encoded with S3's constraints here to comply with previous
+ # links with less strict filenames
+ def get_file(file) do
+ config = Config.get([__MODULE__])
+ bucket = Keyword.fetch!(config, :bucket)
+
+ bucket_with_namespace =
+ cond do
+ truncated_namespace = Keyword.get(config, :truncated_namespace) ->
+ truncated_namespace
+
+ namespace = Keyword.get(config, :bucket_namespace) ->
+ namespace <> ":" <> bucket
+
+ true ->
+ bucket
+ end
+
+ {:ok,
+ {:url,
+ Path.join([
+ Keyword.fetch!(config, :public_endpoint),
+ bucket_with_namespace,
+ strict_encode(URI.decode(file))
+ ])}}
+ end