mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 09:56:17 +08:00
Handle ugly url targets
This commit is contained in:
parent
07cbf8f4e3
commit
32e414690a
|
@ -6,14 +6,14 @@ class UriAdapter
|
|||
def initialize(target)
|
||||
raise Discourse::InvalidParameters unless target =~ /^https?:\/\//
|
||||
|
||||
@target = URI(target)
|
||||
@target = Addressable::URI.parse(target)
|
||||
@original_filename = ::File.basename(@target.path)
|
||||
@content = download_content
|
||||
@tempfile = TempfileFactory.new.generate(@original_filename)
|
||||
end
|
||||
|
||||
def download_content
|
||||
open(target)
|
||||
open(target.normalize)
|
||||
end
|
||||
|
||||
def copy_to_tempfile(src)
|
||||
|
|
|
@ -14,7 +14,7 @@ describe UriAdapter do
|
|||
describe "#initialize" do
|
||||
|
||||
it "has a target" do
|
||||
subject.target.should be_instance_of(URI::HTTP)
|
||||
subject.target.should be_instance_of(Addressable::URI)
|
||||
end
|
||||
|
||||
it "has content" do
|
||||
|
@ -29,6 +29,27 @@ describe UriAdapter do
|
|||
subject.tempfile.should be_instance_of Tempfile
|
||||
end
|
||||
|
||||
describe "it handles ugly targets" do
|
||||
let(:ugly_target) { "http://cdn.discourse.org/assets/logo with spaces.png" }
|
||||
subject { UriAdapter.new(ugly_target) }
|
||||
|
||||
it "handles targets" do
|
||||
subject.target.should be_instance_of(Addressable::URI)
|
||||
end
|
||||
|
||||
it "has content" do
|
||||
subject.content.should == response
|
||||
end
|
||||
|
||||
it "has an original_filename" do
|
||||
subject.original_filename.should == "logo with spaces.png"
|
||||
end
|
||||
|
||||
it "has a tempfile" do
|
||||
subject.tempfile.should be_instance_of Tempfile
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "#copy_to_tempfile" do
|
||||
|
|
Loading…
Reference in New Issue
Block a user