Changeset 6160
- Timestamp:
- 02/18/07 00:47:18 (1 year ago)
- Files:
-
- trunk/actionpack/lib/action_controller/base.rb (modified) (2 diffs)
- trunk/actionpack/test/controller/render_test.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionpack/lib/action_controller/base.rb
r6158 r6160 8 8 require 'drb' 9 9 require 'set' 10 require ' md5'10 require 'digest/md5' 11 11 12 12 module ActionController #:nodoc: … … 877 877 else 878 878 response.body = text 879 end 880 881 if response.headers['Status'] == "200 OK" && response.body.size > 0 882 response.headers['Etag'] = "\"#{MD5.new(text).to_s}\"" 883 884 if request.headers['HTTP_IF_NONE_MATCH'] == response.headers['Etag'] 885 response.headers['Status'] = "304 Not Modified" 886 response.body = '' 879 880 if text.is_a?(String) 881 if response.headers['Status'][0..2] == '200' && !response.body.empty? 882 response.headers['Etag'] = %("#{Digest::MD5.hexdigest(text)}") 883 884 if request.headers['HTTP_IF_NONE_MATCH'] == response.headers['Etag'] 885 response.headers['Status'] = "304 Not Modified" 886 response.body = '' 887 end 888 end 887 889 end 888 890 end 889 891 890 892 response.body 891 893 end trunk/actionpack/test/controller/render_test.rb
r6158 r6160 312 312 def test_render_with_etag 313 313 get :render_hello_world_from_variable 314 expected_etag = "\"#{MD5.new("hello david").to_s}\""314 expected_etag = etag_for('hello david') 315 315 assert_equal expected_etag, @response.headers['Etag'] 316 316 317 317 @request.headers["HTTP_IF_NONE_MATCH"] = expected_etag 318 318 get :render_hello_world_from_variable 319 319 assert_equal "304 Not Modified", @response.headers['Status'] 320 320 321 321 @request.headers["HTTP_IF_NONE_MATCH"] = "\"diftag\"" 322 322 get :render_hello_world_from_variable … … 333 333 assert_deprecated(/render/, &block) 334 334 end 335 335 336 336 def etag_for(text) 337 "\"#{MD5.new(text).to_s}\""337 %("#{Digest::MD5.hexdigest(text)}") 338 338 end 339 339 end