mirror of
https://github.com/discourse/discourse.git
synced 2025-02-16 23:12:45 +08:00
fix s3_cdn_url when the s3 bucket contains a folder
This commit is contained in:
parent
ea7ffac17e
commit
4be0e31459
|
@ -85,7 +85,8 @@ module FileStore
|
|||
def cdn_url(url)
|
||||
return url if SiteSetting.Upload.s3_cdn_url.blank?
|
||||
schema = url[/^(https?:)?\/\//, 1]
|
||||
url.sub("#{schema}#{absolute_base_url}", SiteSetting.Upload.s3_cdn_url)
|
||||
folder = @s3_helper.s3_bucket_folder_path.nil? ? "" : "#{@s3_helper.s3_bucket_folder_path}/"
|
||||
url.sub("#{schema}#{absolute_base_url}/#{folder}", "#{SiteSetting.Upload.s3_cdn_url}/")
|
||||
end
|
||||
|
||||
def cache_avatar(avatar, user_id)
|
||||
|
|
|
@ -4,7 +4,7 @@ class S3Helper
|
|||
|
||||
class SettingMissing < StandardError; end
|
||||
|
||||
attr_reader :s3_bucket_name
|
||||
attr_reader :s3_bucket_name, :s3_bucket_folder_path
|
||||
|
||||
def initialize(s3_bucket_name, tombstone_prefix = '', options = {})
|
||||
@s3_options = default_s3_options.merge(options)
|
||||
|
|
|
@ -725,6 +725,29 @@ describe PrettyText do
|
|||
|
||||
test_s3_cdn
|
||||
end
|
||||
|
||||
def test_s3_with_subfolder_cdn
|
||||
raw = <<~RAW
|
||||
<img src='https:#{Discourse.store.absolute_base_url}/subfolder/original/9/9/99c9384b8b6d87f8509f8395571bc7512ca3cad1.jpg'>
|
||||
RAW
|
||||
|
||||
html = <<~HTML
|
||||
<p><img src="https://awesome.cdn/subfolder/original/9/9/99c9384b8b6d87f8509f8395571bc7512ca3cad1.jpg"></p>
|
||||
HTML
|
||||
|
||||
expect(PrettyText.cook(raw)).to eq(html.strip)
|
||||
end
|
||||
|
||||
it 'can substitute s3 with subfolder cdn when added via global setting' do
|
||||
|
||||
global_setting :s3_access_key_id, 'XXX'
|
||||
global_setting :s3_secret_access_key, 'XXX'
|
||||
global_setting :s3_bucket, 'XXX/subfolder'
|
||||
global_setting :s3_region, 'XXX'
|
||||
global_setting :s3_cdn_url, 'https://awesome.cdn/subfolder'
|
||||
|
||||
test_s3_with_subfolder_cdn
|
||||
end
|
||||
end
|
||||
|
||||
describe "emoji" do
|
||||
|
|
Loading…
Reference in New Issue
Block a user