config :pleroma, Pleroma.Uploaders.S3,
bucket: nil,
- public_endpoint: "https://s3.amazonaws.com"
+ public_endpoint: "https://s3.amazonaws.com",
+ force_media_proxy: false
config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"]
defmodule Pleroma.Uploaders.S3 do
+ alias Pleroma.Web.MediaProxy
+
@behaviour Pleroma.Uploaders.Uploader
def put_file(name, uuid, path, content_type, _should_dedupe) do
settings = Application.get_env(:pleroma, Pleroma.Uploaders.S3)
bucket = Keyword.fetch!(settings, :bucket)
public_endpoint = Keyword.fetch!(settings, :public_endpoint)
+ force_media_proxy = Keyword.fetch!(settings, :force_media_proxy)
{:ok, file_data} = File.read(path)
])
|> ExAws.request()
- {:ok, "#{public_endpoint}/#{bucket}/#{s3_name}"}
+ url_base = "#{public_endpoint}/#{bucket}/#{s3_name}"
+
+ public_url =
+ if force_media_proxy do
+ MediaProxy.url(url_base)
+ else
+ url_base
+ end
+
+ {:ok, public_url}
end
defp encode(name) do