FIX: redirect to CDN avatar for s3 avatars
This commit is contained in:
parent
0a2a248acc
commit
a988cd5abe
|
@ -74,7 +74,7 @@ class UserAvatarsController < ApplicationController
|
|||
if optimized = get_optimized_image(upload, size)
|
||||
unless optimized.local?
|
||||
expires_in 1.day, public: true
|
||||
return redirect_to optimized.url
|
||||
return redirect_to Discourse.store.cdn_url(optimized.url)
|
||||
end
|
||||
image = Discourse.store.path_for(optimized)
|
||||
end
|
||||
|
|
|
@ -44,6 +44,10 @@ module FileStore
|
|||
def purge_tombstone(grace_period)
|
||||
end
|
||||
|
||||
def cdn_url(url)
|
||||
url
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -79,6 +79,14 @@ module FileStore
|
|||
end
|
||||
end
|
||||
|
||||
def cdn_url(url)
|
||||
if SiteSetting.s3_cdn_url.present?
|
||||
url.sub(absolute_base_url, SiteSetting.s3_cdn_url)
|
||||
else
|
||||
url
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def get_path_for_upload(file, upload)
|
||||
|
|
|
@ -3,23 +3,34 @@ require 'spec_helper'
|
|||
describe UserAvatarsController do
|
||||
|
||||
context 'show' do
|
||||
it 'redirects to correct size for non local' do
|
||||
it 'handles non local content correctly' do
|
||||
SiteSetting.avatar_sizes = "100|49"
|
||||
SiteSetting.enable_s3_uploads = true
|
||||
SiteSetting.s3_access_key_id = "XXX"
|
||||
SiteSetting.s3_secret_access_key = "XXX"
|
||||
SiteSetting.s3_upload_bucket = "test"
|
||||
SiteSetting.s3_cdn_url = "http://cdn.com"
|
||||
|
||||
GlobalSetting.expects(:cdn_url).returns("http://awesome.com/boom")
|
||||
|
||||
|
||||
upload = Fabricate(:upload)
|
||||
upload = Fabricate(:upload, url: "//test.s3-#{SiteSetting.s3_region}.amazonaws.com/something")
|
||||
Fabricate(:optimized_image,
|
||||
sha1: SecureRandom.hex << "A"*8,
|
||||
upload: upload,
|
||||
width: 98,
|
||||
height: 98,
|
||||
url: "//test.s3-#{SiteSetting.s3_region}.amazonaws.com/something/else")
|
||||
|
||||
user = Fabricate(:user, uploaded_avatar_id: upload.id)
|
||||
|
||||
get :show, size: 97, username: user.username, version: upload.id, hostname: 'default'
|
||||
|
||||
# 98 is closese which is 49 * 2 for retina
|
||||
expect(response).to redirect_to("http://awesome.com/boom/user_avatar/default/#{user.username_lower}/98/#{upload.id}.png")
|
||||
|
||||
get :show, size: 98, username: user.username, version: upload.id, hostname: 'default'
|
||||
expect(response).to redirect_to("http://cdn.com/something/else")
|
||||
end
|
||||
|
||||
it 'serves image even if size missing and its in local mode' do
|
||||
|
|
Loading…
Reference in New Issue