s3 uploader: add new feature to force public attachment URIs to go through media proxy
This commit is contained in:
parent
f407831120
commit
36825932eb
2 changed files with 15 additions and 2 deletions
|
@ -20,7 +20,8 @@ config :pleroma, Pleroma.Uploaders.Local,
|
|||
|
||||
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"]
|
||||
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
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)
|
||||
|
||||
|
@ -19,7 +22,16 @@ defmodule Pleroma.Uploaders.S3 do
|
|||
])
|
||||
|> 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
|
||||
|
|
Loading…
Reference in a new issue