[前][次][番号順一覧][スレッド一覧]

ruby-changes:15973

From: shyouhei <ko1@a...>
Date: Thu, 20 May 2010 16:58:13 +0900 (JST)
Subject: [ruby-changes:15973] Ruby:r27918 (ruby_1_8_7): merge revision(s) 26346:

shyouhei	2010-05-20 16:58:00 +0900 (Thu, 20 May 2010)

  New Revision: 27918

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27918

  Log:
    merge revision(s) 26346:
    * lib/webrick/httpservlet/filehandler.rb (make_partial_content):
      add bytes-unit.  [ruby-dev:40030]

  Modified files:
    branches/ruby_1_8_7/ChangeLog
    branches/ruby_1_8_7/lib/webrick/httpservlet/filehandler.rb
    branches/ruby_1_8_7/test/webrick/test_filehandler.rb
    branches/ruby_1_8_7/version.h

Index: ruby_1_8_7/ChangeLog
===================================================================
--- ruby_1_8_7/ChangeLog	(revision 27917)
+++ ruby_1_8_7/ChangeLog	(revision 27918)
@@ -1,3 +1,8 @@
+Thu May 20 16:28:17 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* lib/webrick/httpservlet/filehandler.rb (make_partial_content):
+	  add bytes-unit.  [ruby-dev:40030]
+
 Thu May 20 16:17:37 2010  NAKAMURA, Hiroshi  <nahi@r...>
 
 	* ext/zlib/zlib.c: backport r18029 and r21861 from trunk.
Index: ruby_1_8_7/version.h
===================================================================
--- ruby_1_8_7/version.h	(revision 27917)
+++ ruby_1_8_7/version.h	(revision 27918)
@@ -2,7 +2,7 @@
 #define RUBY_RELEASE_DATE "2010-05-20"
 #define RUBY_VERSION_CODE 187
 #define RUBY_RELEASE_CODE 20100520
-#define RUBY_PATCHLEVEL 258
+#define RUBY_PATCHLEVEL 259
 
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 8
Index: ruby_1_8_7/lib/webrick/httpservlet/filehandler.rb
===================================================================
--- ruby_1_8_7/lib/webrick/httpservlet/filehandler.rb	(revision 27917)
+++ ruby_1_8_7/lib/webrick/httpservlet/filehandler.rb	(revision 27918)
@@ -87,7 +87,7 @@
               content = io.read(last-first+1)
               body << "--" << boundary << CRLF
               body << "Content-Type: #{mtype}" << CRLF
-              body << "Content-Range: #{first}-#{last}/#{filesize}" << CRLF
+              body << "Content-Range: bytes #{first}-#{last}/#{filesize}" << CRLF
               body << CRLF
               body << content
               body << CRLF
@@ -107,7 +107,7 @@
               content = io.read(last-first+1)
             end
             res['content-type'] = mtype
-            res['content-range'] = "#{first}-#{last}/#{filesize}"
+            res['content-range'] = "bytes #{first}-#{last}/#{filesize}"
             res['content-length'] = last - first + 1
             res.body = content
           else
Index: ruby_1_8_7/test/webrick/test_filehandler.rb
===================================================================
--- ruby_1_8_7/test/webrick/test_filehandler.rb	(revision 27917)
+++ ruby_1_8_7/test/webrick/test_filehandler.rb	(revision 27918)
@@ -71,6 +71,11 @@
   def test_filehandler
     config = { :DocumentRoot => File.dirname(__FILE__), }
     this_file = File.basename(__FILE__)
+    filesize = File.size(__FILE__)
+    this_data = File.open(__FILE__, "rb") {|f| f.read}
+    range = nil
+    bug2593 = '[ruby-dev:40030]'
+
     TestWEBrick.start_httpserver(config) do |server, addr, port|
       http = Net::HTTP.new(addr, port)
       req = Net::HTTP::Get.new("/")
@@ -85,6 +90,67 @@
         assert_equal("text/plain", res.content_type)
         assert_equal(File.read(__FILE__), res.body)
       }
+
+      req = Net::HTTP::Get.new("/#{this_file}", "range"=>"bytes=#{filesize-100}-")
+      http.request(req){|res|
+        assert_equal("206", res.code, log.call)
+        assert_equal("text/plain", res.content_type, log.call)
+        assert_nothing_raised(bug2593) {range = res.content_range}
+        assert_equal((filesize-100)..(filesize-1), range, log.call)
+        assert_equal(this_data[-100..-1], res.body, log.call)
+      }
+
+      req = Net::HTTP::Get.new("/#{this_file}", "range"=>"bytes=-100")
+      http.request(req){|res|
+        assert_equal("206", res.code, log.call)
+        assert_equal("text/plain", res.content_type, log.call)
+        assert_nothing_raised(bug2593) {range = res.content_range}
+        assert_equal((filesize-100)..(filesize-1), range, log.call)
+        assert_equal(this_data[-100..-1], res.body, log.call)
+      }
+
+      req = Net::HTTP::Get.new("/#{this_file}", "range"=>"bytes=0-99")
+      http.request(req){|res|
+        assert_equal("206", res.code, log.call)
+        assert_equal("text/plain", res.content_type, log.call)
+        assert_nothing_raised(bug2593) {range = res.content_range}
+        assert_equal(0..99, range, log.call)
+        assert_equal(this_data[0..99], res.body, log.call)
+      }
+
+      req = Net::HTTP::Get.new("/#{this_file}", "range"=>"bytes=100-199")
+      http.request(req){|res|
+        assert_equal("206", res.code, log.call)
+        assert_equal("text/plain", res.content_type, log.call)
+        assert_nothing_raised(bug2593) {range = res.content_range}
+        assert_equal(100..199, range, log.call)
+        assert_equal(this_data[100..199], res.body, log.call)
+      }
+
+      req = Net::HTTP::Get.new("/#{this_file}", "range"=>"bytes=0-0")
+      http.request(req){|res|
+        assert_equal("206", res.code, log.call)
+        assert_equal("text/plain", res.content_type, log.call)
+        assert_nothing_raised(bug2593) {range = res.content_range}
+        assert_equal(0..0, range, log.call)
+        assert_equal(this_data[0..0], res.body, log.call)
+      }
+
+      req = Net::HTTP::Get.new("/#{this_file}", "range"=>"bytes=-1")
+      http.request(req){|res|
+        assert_equal("206", res.code, log.call)
+        assert_equal("text/plain", res.content_type, log.call)
+        assert_nothing_raised(bug2593) {range = res.content_range}
+        assert_equal((filesize-1)..(filesize-1), range, log.call)
+        assert_equal(this_data[-1, 1], res.body, log.call)
+      }
+
+      req = Net::HTTP::Get.new("/#{this_file}", "range"=>"bytes=0-0, -2")
+      http.request(req){|res|
+        assert_equal("206", res.code, log.call)
+        assert_equal("multipart/byteranges", res.content_type, log.call)
+      }
+
     end
   end
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]