From f5142861e5b29c060a1a8c7096c92e51c9bb3701 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 22 Aug 2018 11:31:33 +1000 Subject: [PATCH] Revert "Revert "FIX: upload URLs from S3 on subfolder installs"" This reverts commit 26c96e97e5e30b1ca4e7b73103ca02c908ed4073. We have no choice but to run this code --- lib/file_store/s3_store.rb | 2 +- spec/components/file_store/s3_store_spec.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/file_store/s3_store.rb b/lib/file_store/s3_store.rb index 076ea2171ab..b2f9c20988b 100644 --- a/lib/file_store/s3_store.rb +++ b/lib/file_store/s3_store.rb @@ -91,7 +91,7 @@ module FileStore return url if SiteSetting.Upload.s3_cdn_url.blank? schema = url[/^(https?:)?\/\//, 1] 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}/") + url.sub("#{schema}#{absolute_base_url}/#{folder}", "#{SiteSetting.Upload.s3_cdn_url}#{Discourse.base_uri}/") end def cache_avatar(avatar, user_id) diff --git a/spec/components/file_store/s3_store_spec.rb b/spec/components/file_store/s3_store_spec.rb index 06948702dd7..99e46fe4ccc 100644 --- a/spec/components/file_store/s3_store_spec.rb +++ b/spec/components/file_store/s3_store_spec.rb @@ -282,4 +282,21 @@ describe FileStore::S3Store do assert_path("https://hello", nil) end end + + describe '.cdn_url' do + + it 'uses the correct path' do + url = "//s3-upload-bucket.s3-us-west-2.amazonaws.com/livechat/original/1X/2252ae522257fc537351e47bbdd34698936b6c38.jpeg" + expect(store.cdn_url(url)).to end_with('/livechat/original/1X/2252ae522257fc537351e47bbdd34698936b6c38.jpeg') + end + + it 'supports subfolder' do + SiteSetting.s3_upload_bucket = 's3-upload-bucket/livechat/community' + GlobalSetting.stubs(:relative_url_root).returns('/community') + Discourse.stubs(:base_uri).returns("/community") + url = "//s3-upload-bucket.s3-us-west-2.amazonaws.com/livechat/community/original/1X/2252ae522257fc537351e47bbdd34698936b6c38.jpeg" + expect(store.cdn_url(url)).to end_with('/livechat/community/original/1X/2252ae522257fc537351e47bbdd34698936b6c38.jpeg') + end + end + end