has_image 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 2008-10-09 Dima Sabanin <sdmitry@gmail.com>
2
+ * Fixed display of images with special symbols in the name,
3
+ like '2777-nipple-+-apple-napple.jpg'. + is reserved by HTTP.
4
+ Now escaping filenames before giving them back in #public_path()
5
+
1
6
  2008-09-10 Norman Clarke <norman@randomba.org>
2
7
  * Fixed images not being converted to target format.
3
8
 
@@ -87,7 +87,13 @@ module HasImage
87
87
  #
88
88
  # /photos/0000/0001/3er0zs.jpg
89
89
  def public_path_for(object, thumbnail = nil)
90
- filesystem_path_for(object, thumbnail).gsub(/\A.*public/, '')
90
+ webpath = filesystem_path_for(object, thumbnail).gsub(/\A.*public/, '')
91
+ escape_file_name_for_http(webpath)
92
+ end
93
+
94
+ def escape_file_name_for_http(webpath)
95
+ dir, file = File.split(webpath)
96
+ File.join(dir, CGI.escape(file))
91
97
  end
92
98
 
93
99
  # Deletes the images and directory that contains them.
data/test/storage_test.rb CHANGED
@@ -40,6 +40,24 @@ class StorageTest < Test::Unit::TestCase
40
40
  assert_equal "/tests/0000/0001/mypic_square.jpg", @storage.public_path_for(pic, :square)
41
41
  end
42
42
 
43
+ def test_public_path_for_image_with_html_special_symbols_in_name
44
+ @storage = HasImage::Storage.new(default_options.merge(:base_path => '/public'))
45
+ pic = stub(:has_image_file => "my+pic", :has_image_id => 1)
46
+ assert_equal "/tests/0000/0001/my%2Bpic_square.jpg", @storage.public_path_for(pic, :square)
47
+ end
48
+
49
+ def test_escape_file_name_for_http
50
+ @storage = HasImage::Storage.new(default_options.merge(:base_path => '/public'))
51
+ real = @storage.escape_file_name_for_http("/tests/0000/0001/mypic+square?something.jpg")
52
+ assert_equal "/tests/0000/0001/mypic%2Bsquare%3Fsomething.jpg", real
53
+ end
54
+
55
+ def test_escape_file_name_for_http_escapes_only_filename
56
+ @storage = HasImage::Storage.new(default_options.merge(:base_path => '/public'))
57
+ real = @storage.escape_file_name_for_http("/tests/00+00/0001/mypic+square?something.jpg")
58
+ assert_equal "/tests/00+00/0001/mypic%2Bsquare%3Fsomething.jpg", real
59
+ end
60
+
43
61
  def test_filename_for
44
62
  @storage = HasImage::Storage.new(default_options)
45
63
  assert_equal "test.jpg", @storage.send(:file_name_for, "test")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norman Clarke
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-10 00:00:00 -03:00
12
+ date: 2008-10-09 00:00:00 -03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency