From 357df2ff4fa1afc3c1efa4d33288aedd24882d88 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Tue, 21 Aug 2018 14:58:42 -0400 Subject: [PATCH] FIX: upload URLs from S3 on subfolder installs --- 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