mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: use cdn url to download the external uploads to local.
This commit is contained in:
parent
4be54d5ae1
commit
b7830680b6
@ -77,7 +77,8 @@ module FileStore
|
|||||||
|
|
||||||
if !file
|
if !file
|
||||||
max_file_size_kb = [SiteSetting.max_image_size_kb, SiteSetting.max_attachment_size_kb].max.kilobytes
|
max_file_size_kb = [SiteSetting.max_image_size_kb, SiteSetting.max_attachment_size_kb].max.kilobytes
|
||||||
url = SiteSetting.scheme + ":" + upload.url
|
url = Discourse.store.cdn_url(upload.url)
|
||||||
|
url = SiteSetting.scheme + ":" + url if url =~ /^\/\//
|
||||||
file = FileHelper.download(
|
file = FileHelper.download(
|
||||||
url,
|
url,
|
||||||
max_file_size: max_file_size_kb,
|
max_file_size: max_file_size_kb,
|
||||||
|
@ -59,13 +59,12 @@ RSpec.describe FileStore::BaseStore do
|
|||||||
end
|
end
|
||||||
|
|
||||||
let(:upload_s3) { Fabricate(:upload_s3) }
|
let(:upload_s3) { Fabricate(:upload_s3) }
|
||||||
|
let(:store) { FileStore::BaseStore.new }
|
||||||
|
|
||||||
it "should return consistent encodings for fresh and cached downloads" do
|
it "should return consistent encodings for fresh and cached downloads" do
|
||||||
# Net::HTTP always returns binary ASCII-8BIT encoding. File.read auto-detects the encoding
|
# Net::HTTP always returns binary ASCII-8BIT encoding. File.read auto-detects the encoding
|
||||||
# Make sure we File.read after downloading a file for consistency
|
# Make sure we File.read after downloading a file for consistency
|
||||||
|
|
||||||
store = FileStore::BaseStore.new
|
|
||||||
|
|
||||||
first_encoding = store.download(upload_s3).read.encoding
|
first_encoding = store.download(upload_s3).read.encoding
|
||||||
|
|
||||||
second_encoding = store.download(upload_s3).read.encoding
|
second_encoding = store.download(upload_s3).read.encoding
|
||||||
@ -73,5 +72,20 @@ RSpec.describe FileStore::BaseStore do
|
|||||||
expect(first_encoding).to eq(Encoding::UTF_8)
|
expect(first_encoding).to eq(Encoding::UTF_8)
|
||||||
expect(second_encoding).to eq(Encoding::UTF_8)
|
expect(second_encoding).to eq(Encoding::UTF_8)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should return the file" do
|
||||||
|
file = store.download(upload_s3)
|
||||||
|
|
||||||
|
expect(file.class).to eq(File)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should return the file when s3 cdn enabled" do
|
||||||
|
SiteSetting.s3_cdn_url = "https://cdn.s3.amazonaws.com"
|
||||||
|
stub_request(:get, Discourse.store.cdn_url(upload_s3.url)).to_return(status: 200, body: "Hello world")
|
||||||
|
|
||||||
|
file = store.download(upload_s3)
|
||||||
|
|
||||||
|
expect(file.class).to eq(File)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user