<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>doc/rdoc-style.css</filename>
    </added>
    <added>
      <filename>rufus-verbs.gemspec</filename>
    </added>
    <added>
      <filename>test/base.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,7 +1,8 @@
 
 = rufus-verbs CHANGELOG.txt
 
-== rufus-verbs - 0.11   not yet released
+
+== rufus-verbs - 1.0.0   not yet released
 
 
 == rufus-verbs - 0.10   released 2008/05/28</diff>
      <filename>CHANGELOG.txt</filename>
    </modified>
    <modified>
      <diff>@@ -5,46 +5,19 @@ require 'rake'
 require 'rake/clean'
 require 'rake/packagetask'
 require 'rake/gempackagetask'
-require 'rake/rdoctask'
 require 'rake/testtask'
 
-require 'lib/rufus/verbs/version' # Rufus::Verbs::VERSION
+#require 'rake/rdoctask'
+require 'hanna/rdoctask'
 
-#
-# GEM SPEC
-
-spec = Gem::Specification.new do |s|
-
-  s.name        = &quot;rufus-verbs&quot;
-  s.version       = Rufus::Verbs::VERSION
-  s.authors       = [ &quot;John Mettraux&quot; ]
-  s.email       = &quot;john at openwfe dot org&quot;
-  s.homepage      = &quot;http://rufus.rubyforge.org/rufus-verbs&quot;
-  s.platform      = Gem::Platform::RUBY
-  s.summary       = &quot;GET, POST, PUT, DELETE, with something around&quot;
-  #s.license       = &quot;MIT&quot;
-
-  s.require_path    = &quot;lib&quot;
-  #s.autorequire     = &quot;rufus-verbs&quot;
-  s.test_file     = &quot;test/test.rb&quot;
-  s.has_rdoc      = true
-  s.extra_rdoc_files  = [ 'README.txt' ]
-
-  [ 'rufus-lru' ].each do |d|
-    s.requirements &lt;&lt; d
-    s.add_dependency d
-  end
+gemspec = File.read('rufus-verbs.gemspec')
+eval &quot;gemspec = #{gemspec}&quot;
 
-  files = FileList[ &quot;{bin,docs,lib,test}/**/*&quot; ]
-  files.exclude &quot;rdoc&quot;
-  files.exclude &quot;extras&quot;
-  s.files = files.to_a
-end
 
 #
 # tasks
 
-CLEAN.include(&quot;pkg&quot;, &quot;html&quot;, &quot;rdoc&quot;)
+CLEAN.include('pkg', 'html')
 
 task :default =&gt; [ :clean, :repackage ]
 
@@ -53,25 +26,26 @@ task :default =&gt; [ :clean, :repackage ]
 # TESTING
 
 Rake::TestTask.new(:test) do |t|
-  t.libs &lt;&lt; &quot;test&quot;
+  t.libs &lt;&lt; 'test'
   t.test_files = FileList['test/test.rb']
   t.verbose = true
 end
 
+
 #
 # PACKAGING
 
-Rake::GemPackageTask.new(spec) do |pkg|
+Rake::GemPackageTask.new(gemspec) do |pkg|
   #pkg.need_tar = true
 end
 
-Rake::PackageTask.new(&quot;rufus-verbs&quot;, Rufus::Verbs::VERSION) do |pkg|
+Rake::PackageTask.new('rufus-verbs', gemspec.version) do |pkg|
   pkg.need_zip = true
   pkg.package_files = FileList[
-    &quot;Rakefile&quot;,
-    &quot;*.txt&quot;,
-    &quot;lib/**/*&quot;,
-    &quot;test/**/*&quot;
+    'Rakefile',
+    '*.txt',
+    'lib/**/*',
+    'test/**/*'
   ].to_a
   #pkg.package_files.delete(&quot;MISC.txt&quot;)
   class &lt;&lt; pkg
@@ -82,40 +56,47 @@ Rake::PackageTask.new(&quot;rufus-verbs&quot;, Rufus::Verbs::VERSION) do |pkg|
 end
 
 #
-# DOCUMENTATION
-
-#ALLISON=`allison --path`
-ALLISON=&quot;/Library/Ruby/Gems/1.8/gems/allison-2.0.3/lib/allison.rb&quot;
+# VERSION
 
-Rake::RDocTask.new do |rd|
+task :change_version do
 
-  rd.main = &quot;README.txt&quot;
+  version = ARGV.pop
+  `sedip &quot;s/VERSION = '.*'/VERSION = '#{version}'/&quot; lib/rufus/verbs/version.rb`
+  `sedip &quot;s/s.version = '.*'/s.version = '#{version}'/&quot; rufus-verbs.gemspec`
+  exit 0 # prevent rake from triggering other tasks
+end
 
-  rd.rdoc_dir = &quot;html/rufus-verbs&quot;
 
-  rd.rdoc_files.include(
-    &quot;README.txt&quot;,
-    &quot;CHANGELOG.txt&quot;,
-    &quot;LICENSE.txt&quot;,
-    &quot;CREDITS.txt&quot;,
-    &quot;lib/**/*.rb&quot;)
+#
+# DOCUMENTATION
 
-  rd.title = &quot;rufus-verbs rdoc&quot;
+Rake::RDocTask.new do |rd|
 
+  rd.main = 'README.txt'
+  rd.rdoc_dir = 'html/rufus-verbs'
+  rd.rdoc_files.include(
+    'README.txt',
+    'CHANGELOG.txt',
+    'LICENSE.txt',
+    'CREDITS.txt',
+    'lib/**/*.rb')
+  rd.title = 'rufus-verbs rdoc'
   rd.options &lt;&lt; '-N' # line numbers
   rd.options &lt;&lt; '-S' # inline source
+end
 
-  rd.template = ALLISON if File.exist?(ALLISON)
+task :rrdoc =&gt; :rdoc do
+  FileUtils.cp('doc/rdoc-style.css', 'html/rufus-verbs/')
 end
 
 
 #
 # WEBSITE
 
-task :upload_website =&gt; [ :clean, :rdoc ] do
+task :upload_website =&gt; [ :clean, :rrdoc ] do
 
-  account = &quot;jmettraux@rubyforge.org&quot;
-  webdir = &quot;/var/www/gforge-projects/rufus&quot;
+  account = 'jmettraux@rubyforge.org'
+  webdir = '/var/www/gforge-projects/rufus'
 
   sh &quot;rsync -azv -e ssh html/rufus-verbs #{account}:#{webdir}/&quot;
 </diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
-#
 #--
-# Copyright (c) 2008, John Mettraux, jmettraux@gmail.com
+# Copyright (c) 2008-2009, John Mettraux, jmettraux@gmail.com
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
@@ -20,17 +19,9 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 #
-# (MIT license)
+# Made in Japan.
 #++
-#
 
-#
-# John Mettraux
-#
-# Made in Japan
-#
-# 2008/01/11
-#
 
 require 'rufus/verbs/endpoint'
 require 'rufus/verbs/conditional'</diff>
      <filename>lib/rufus/verbs.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
-#
 #--
-# Copyright (c) 2008, John Mettraux, jmettraux@gmail.com
+# Copyright (c) 2008-2009, John Mettraux, jmettraux@gmail.com
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
@@ -20,19 +19,10 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 #
-# (MIT license)
+# Made in Japan.
 #++
-#
 
-#
-# John Mettraux
-#
-# Made in Japan
-#
-# 2008/01/16
-#
 
-#require 'rubygems'
 require 'rufus/lru'
 
 
@@ -87,53 +77,53 @@ module Rufus::Verbs
 
     private
 
-      #
-      # If the representation has already been gotten, send
-      # potential If-Modified-Since and/or If-None-Match.
-      #
-      def add_conditional_headers (req, opts)
+    #
+    # If the representation has already been gotten, send
+    # potential If-Modified-Since and/or If-None-Match.
+    #
+    def add_conditional_headers (req, opts)
 
-        # if path is cached send since and/or match
+      # if path is cached send since and/or match
 
-        e = @cache[opts[:c_uri]]
+      e = @cache[opts[:c_uri]]
 
-        return unless e # not cached
+      return unless e # not cached
 
-        req['If-Modified-Since'] = e.lastmod if e.lastmod
-        req['If-None-Match'] = e.etag if e.etag
+      req['If-Modified-Since'] = e.lastmod if e.lastmod
+      req['If-None-Match'] = e.etag if e.etag
 
-        opts[:c_cached] = e
-      end
+      opts[:c_cached] = e
+    end
 
-      def handle_response (method, res, opts)
+    def handle_response (method, res, opts)
 
-        # if method is get and reply is 200, cache (if et and/or lm)
-        # if method is get and reply is 304, return from cache
+      # if method is get and reply is 200, cache (if et and/or lm)
+      # if method is get and reply is 304, return from cache
 
-        super
+      super
 
-        code = res.code.to_i
+      code = res.code.to_i
 
-        return opts[:c_cached] if code == 304
+      return opts[:c_cached] if code == 304
 
-        cache(res, opts) if code == 200
+      cache(res, opts) if code == 200
 
-        res
-      end
+      res
+    end
 
-      def cache (res, opts)
+    def cache (res, opts)
 
-        class &lt;&lt; res
-          def lastmod
-            self['Last-Modified']
-          end
-          def etag
-            self['Etag']
-          end
+      class &lt;&lt; res
+        def lastmod
+          self['Last-Modified']
+        end
+        def etag
+          self['Etag']
         end
-
-        @cache[opts[:c_uri]] = res
       end
+
+      @cache[opts[:c_uri]] = res
+    end
   end
 end
 </diff>
      <filename>lib/rufus/verbs/conditional.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
-#
 #--
-# Copyright (c) 2008, John Mettraux, jmettraux@gmail.com
+# Copyright (c) 2008-2009, John Mettraux, jmettraux@gmail.com
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
@@ -20,21 +19,12 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 #
-# (MIT license)
+# Made in Japan.
 #++
-#
 
-#
-# John Mettraux
-#
-# Made in Japan
-#
-# 2008/01/19
-#
 
 require 'webrick/cookie'
 
-#require 'rubygems'
 require 'rufus/lru'
 
 
@@ -55,124 +45,124 @@ module Verbs
 
     protected
 
-      #
-      # Prepares the instance variable @cookies for storing
-      # cooking for this endpoint.
-      #
-      # Reads the :cookies endpoint option for determining the
-      # size of the cookie jar (77 by default).
-      #
-      def prepare_cookie_jar
+    #
+    # Prepares the instance variable @cookies for storing
+    # cooking for this endpoint.
+    #
+    # Reads the :cookies endpoint option for determining the
+    # size of the cookie jar (77 by default).
+    #
+    def prepare_cookie_jar
 
-        o = @opts[:cookies]
+      o = @opts[:cookies]
 
-        return unless o and o != false
+      return unless o and o != false
 
-        s = o.to_s.to_i
-        s = 77 if s &lt; 1
+      s = o.to_s.to_i
+      s = 77 if s &lt; 1
 
-        @cookies = CookieJar.new s
-      end
+      @cookies = CookieJar.new s
+    end
 
-      #
-      # Parses the HTTP response for a potential 'Set-Cookie' header,
-      # parses and returns it as a hash.
-      #
-      def parse_cookies (response)
+    #
+    # Parses the HTTP response for a potential 'Set-Cookie' header,
+    # parses and returns it as a hash.
+    #
+    def parse_cookies (response)
 
-        c = response['Set-Cookie']
-        return nil unless c
-        Cookie.parse_set_cookies c
-      end
+      c = response['Set-Cookie']
+      return nil unless c
+      Cookie.parse_set_cookies c
+    end
 
-      #
-      # (This method will have no effect if the EndPoint is not
-      # tracking cookies)
-      #
-      # Registers a potential cookie set by the server.
-      #
-      def register_cookies (response, opts)
+    #
+    # (This method will have no effect if the EndPoint is not
+    # tracking cookies)
+    #
+    # Registers a potential cookie set by the server.
+    #
+    def register_cookies (response, opts)
 
-        return unless @cookies
+      return unless @cookies
 
-        cs = parse_cookies response
+      cs = parse_cookies response
 
-        return unless cs
+      return unless cs
 
-        # &quot;The origin server effectively ends a session by
-        #  sending the client a Set-Cookie header with Max-Age=0&quot;
+      # &quot;The origin server effectively ends a session by
+      #  sending the client a Set-Cookie header with Max-Age=0&quot;
 
-        cs.each do |c|
+      cs.each do |c|
 
-          host = opts[:host]
-          path = opts[:path]
-          cpath = c.path || &quot;/&quot;
+        host = opts[:host]
+        path = opts[:path]
+        cpath = c.path || &quot;/&quot;
 
-          next unless cookie_acceptable?(opts, response, c)
+        next unless cookie_acceptable?(opts, response, c)
 
-          domain = c.domain || host
+        domain = c.domain || host
 
-          if c.max_age == 0
-            @cookies.remove_cookie domain, path, c
-          else
-            @cookies.add_cookie domain, path, c
-          end
+        if c.max_age == 0
+          @cookies.remove_cookie domain, path, c
+        else
+          @cookies.add_cookie domain, path, c
         end
       end
+    end
 
-      #
-      # Checks if the cookie is acceptable in the context of
-      # the request that sent it.
-      #
-      def cookie_acceptable? (opts, response, cookie)
+    #
+    # Checks if the cookie is acceptable in the context of
+    # the request that sent it.
+    #
+    def cookie_acceptable? (opts, response, cookie)
 
-        # reject if :
-        #
-        # * The value for the Path attribute is not a prefix of the
-        #   request-URI.
-        # * The value for the Domain attribute contains no embedded dots
-        #   or does not start with a dot.
-        # * The value for the request-host does not domain-match the
-        #   Domain attribute.
-        # * The request-host is a FQDN (not IP address) and has the form
-        #   HD, where D is the value of the Domain attribute, and H is a
-        #   string that contains one or more dots.
+      # reject if :
+      #
+      # * The value for the Path attribute is not a prefix of the
+      #   request-URI.
+      # * The value for the Domain attribute contains no embedded dots
+      #   or does not start with a dot.
+      # * The value for the request-host does not domain-match the
+      #   Domain attribute.
+      # * The request-host is a FQDN (not IP address) and has the form
+      #   HD, where D is the value of the Domain attribute, and H is a
+      #   string that contains one or more dots.
 
-        cdomain = cookie.domain
+      cdomain = cookie.domain
 
-        if cdomain
+      if cdomain
 
-          return false unless cdomain.index '.'
-          return false if cdomain[0, 1] != '.'
+        return false unless cdomain.index '.'
+        return false if cdomain[0, 1] != '.'
 
-          h, d = split_host(opts[:host])
-          return false if d != cdomain
-        end
+        h, d = split_host(opts[:host])
+        return false if d != cdomain
+      end
 
-        #path = opts[:path]
-        path = response.request.path
+      #path = opts[:path]
+      path = response.request.path
 
-        cpath = cookie.path || &quot;/&quot;
+      cpath = cookie.path || &quot;/&quot;
 
-        return false if path[0..cpath.length-1] != cpath
+      return false if path[0..cpath.length-1] != cpath
 
-        true
-      end
+      true
+    end
 
-      #
-      # Places the 'Cookie' header in the request if appropriate.
-      #
-      # (This method will have no effect if the EndPoint is not
-      # tracking cookies)
-      #
-      def mention_cookies (request, opts)
+    #
+    # Places the 'Cookie' header in the request if appropriate.
+    #
+    # (This method will have no effect if the EndPoint is not
+    # tracking cookies)
+    #
+    def mention_cookies (request, opts)
 
-        return unless @cookies
+      return unless @cookies
 
-        cs = @cookies.fetch_cookies opts[:host], opts[:path]
+      cs = @cookies.fetch_cookies opts[:host], opts[:path]
 
-        request['Cookie'] = cs.collect { |c| c.to_header_s }.join(&quot;,&quot;)
-      end
+      request['Cookie'] = cs.collect { |c| c.to_header_s }.join(&quot;,&quot;)
+    end
   end
 
   #
@@ -184,12 +174,12 @@ module Verbs
 
     def to_header_s
 
-      ret = &quot;&quot;
-      ret &lt;&lt; @name &lt;&lt; &quot;=&quot; &lt;&lt; @value
-      ret &lt;&lt; &quot;; &quot; &lt;&lt; &quot;$Version=&quot; &lt;&lt; @version.to_s if @version &gt; 0
-      ret &lt;&lt; &quot;; &quot; &lt;&lt; &quot;$Domain=&quot;  &lt;&lt; @domain  if @domain
-      ret &lt;&lt; &quot;; &quot; &lt;&lt; &quot;$Port=&quot;  &lt;&lt; @port if @port
-      ret &lt;&lt; &quot;; &quot; &lt;&lt; &quot;$Path=&quot;  &lt;&lt; @path if @path
+      ret = ''
+      ret &lt;&lt; @name &lt;&lt; '=' &lt;&lt; @value
+      ret &lt;&lt; '; ' &lt;&lt; '$Version=' &lt;&lt; @version.to_s if @version &gt; 0
+      ret &lt;&lt; '; ' &lt;&lt; '$Domain=' &lt;&lt; @domain if @domain
+      ret &lt;&lt; '; ' &lt;&lt; '$Port=' &lt;&lt; @port if @port
+      ret &lt;&lt; '; ' &lt;&lt; '$Path=' &lt;&lt; @path if @path
       ret
     end
   end
@@ -306,21 +296,21 @@ module Verbs
 
     private
 
-      #
-      # Returns all the cookies that match a domain (host) and a path.
-      #
-      def do_fetch (dh, path)
+    #
+    # Returns all the cookies that match a domain (host) and a path.
+    #
+    def do_fetch (dh, path)
 
-        return [] unless dh
+      return [] unless dh
 
-        keys = dh.keys.sort.find_all do |k|
-          path[0..k.path.length-1] == k.path
-        end
-        keys.inject([]) do |r, k|
-          r &lt;&lt; dh[k]
-          r
-        end
+      keys = dh.keys.sort.find_all do |k|
+        path[0..k.path.length-1] == k.path
+      end
+      keys.inject([]) do |r, k|
+        r &lt;&lt; dh[k]
+        r
       end
+    end
   end
 end
 end</diff>
      <filename>lib/rufus/verbs/cookies.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
-#
 #--
-# Copyright (c) 2008, John Mettraux, jmettraux@gmail.com
+# Copyright (c) 2008-2009, John Mettraux, jmettraux@gmail.com
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
@@ -20,17 +19,9 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 #
-# (MIT license)
+# Made in Japan.
 #++
-#
 
-#
-# John Mettraux
-#
-# Made in Japan
-#
-# 2008/01/21
-#
 
 require 'digest/md5'
 
@@ -94,166 +85,166 @@ module Verbs
 
     protected
 
-      #
-      # Returns true if :digest_authentication is set at endpoint
-      # or request level.
-      #
-      def no_digest_auth
-
-        (not o(opts, :digest_authentication))
-      end
+    #
+    # Returns true if :digest_authentication is set at endpoint
+    # or request level.
+    #
+    def no_digest_auth
 
-      #
-      # To be enhanced.
-      #
-      # (For example http://www.intertwingly.net/blog/1585.html)
-      #
-      def generate_cnonce
+      (not o(opts, :digest_authentication))
+    end
 
-        Digest::MD5.hexdigest(&quot;%x&quot; % (Time.now.to_i + rand(65535)))
-      end
+    #
+    # To be enhanced.
+    #
+    # (For example http://www.intertwingly.net/blog/1585.html)
+    #
+    def generate_cnonce
 
-      def request_challenge (req, opts)
+      Digest::MD5.hexdigest(&quot;%x&quot; % (Time.now.to_i + rand(65535)))
+    end
 
-        op = opts.dup
+    def request_challenge (req, opts)
 
-        op[:digest_authentication] = false
-          # preventing an infinite loop
+      op = opts.dup
 
-        method = req.class.const_get(:METHOD).downcase.to_sym
-        #method = :get
+      op[:digest_authentication] = false
+        # preventing an infinite loop
 
-        res = request(method, op)
+      method = req.class.const_get(:METHOD).downcase.to_sym
+      #method = :get
 
-        return false if res.code.to_i != 401
+      res = request(method, op)
 
-        @challenge = Challenge.new res
+      return false if res.code.to_i != 401
 
-        true
-      end
+      @challenge = Challenge.new res
 
-      #
-      # Generates an MD5 digest of the arguments (joined by &quot;:&quot;).
-      #
-      def h (*args)
+      true
+    end
 
-        Digest::MD5.hexdigest(args.join(&quot;:&quot;))
-      end
+    #
+    # Generates an MD5 digest of the arguments (joined by &quot;:&quot;).
+    #
+    def h (*args)
 
-      #
-      # Generates the Authentication header that will be returned
-      # to the server.
-      #
-      def generate_header (req, opts)
+      Digest::MD5.hexdigest(args.join(&quot;:&quot;))
+    end
 
-        @nonce_count += 1
+    #
+    # Generates the Authentication header that will be returned
+    # to the server.
+    #
+    def generate_header (req, opts)
 
-        user, pass = o(opts, :digest_authentication)
-        realm = @challenge.realm || &quot;&quot;
-        method = req.class.const_get(:METHOD)
-        path = opts[:path]
+      @nonce_count += 1
 
-        a1 = if @challenge.algorithm == 'MD5-sess'
-          h(h(user, realm, pass), @challenge.nonce, @cnonce)
-        else
-          h(user, realm, pass)
-        end
+      user, pass = o(opts, :digest_authentication)
+      realm = @challenge.realm || &quot;&quot;
+      method = req.class.const_get(:METHOD)
+      path = opts[:path]
 
-        a2, qop = if @challenge.qop.include?(&quot;auth-int&quot;)
-          [ h(method, path, h(req.body)), &quot;auth-int&quot; ]
-        else
-          [ h(method, path), &quot;auth&quot; ]
-        end
+      a1 = if @challenge.algorithm == 'MD5-sess'
+        h(h(user, realm, pass), @challenge.nonce, @cnonce)
+      else
+        h(user, realm, pass)
+      end
 
-        nc = ('%08x' % @nonce_count)
-
-        digest = h(
-          #a1, @challenge.nonce, nc, @cnonce, @challenge.qop, a2)
-          a1, @challenge.nonce, nc, @cnonce, &quot;auth&quot;, a2)
-
-        header = &quot;&quot;
-        header &lt;&lt; &quot;Digest username=\&quot;#{user}\&quot;, &quot;
-        header &lt;&lt; &quot;realm=\&quot;#{realm}\&quot;, &quot;
-        header &lt;&lt; &quot;qop=\&quot;#{qop}\&quot;, &quot;
-        header &lt;&lt; &quot;uri=\&quot;#{path}\&quot;, &quot;
-        header &lt;&lt; &quot;nonce=\&quot;#{@challenge.nonce}\&quot;, &quot;
-        #header &lt;&lt; &quot;nc=##{nc}, &quot;
-        header &lt;&lt; &quot;nc=#{nc}, &quot;
-        header &lt;&lt; &quot;cnonce=\&quot;#{@cnonce}\&quot;, &quot;
-        header &lt;&lt; &quot;algorithm=\&quot;#{@challenge.algorithm}\&quot;, &quot;
-        #header &lt;&lt; &quot;algorithm=\&quot;MD5-sess\&quot;, &quot;
-        header &lt;&lt; &quot;response=\&quot;#{digest}\&quot;, &quot;
-        header &lt;&lt; &quot;opaque=\&quot;#{@challenge.opaque}\&quot;&quot;
-
-        header
+      a2, qop = if @challenge.qop.include?(&quot;auth-int&quot;)
+        [ h(method, path, h(req.body)), &quot;auth-int&quot; ]
+      else
+        [ h(method, path), &quot;auth&quot; ]
       end
 
-      #
-      # A common parent class for Challenge and AuthInfo.
-      # Their header parsing code is here.
-      #
-      class ServerReply
+      nc = ('%08x' % @nonce_count)
+
+      digest = h(
+        #a1, @challenge.nonce, nc, @cnonce, @challenge.qop, a2)
+        a1, @challenge.nonce, nc, @cnonce, &quot;auth&quot;, a2)
+
+      header = &quot;&quot;
+      header &lt;&lt; &quot;Digest username=\&quot;#{user}\&quot;, &quot;
+      header &lt;&lt; &quot;realm=\&quot;#{realm}\&quot;, &quot;
+      header &lt;&lt; &quot;qop=\&quot;#{qop}\&quot;, &quot;
+      header &lt;&lt; &quot;uri=\&quot;#{path}\&quot;, &quot;
+      header &lt;&lt; &quot;nonce=\&quot;#{@challenge.nonce}\&quot;, &quot;
+      #header &lt;&lt; &quot;nc=##{nc}, &quot;
+      header &lt;&lt; &quot;nc=#{nc}, &quot;
+      header &lt;&lt; &quot;cnonce=\&quot;#{@cnonce}\&quot;, &quot;
+      header &lt;&lt; &quot;algorithm=\&quot;#{@challenge.algorithm}\&quot;, &quot;
+      #header &lt;&lt; &quot;algorithm=\&quot;MD5-sess\&quot;, &quot;
+      header &lt;&lt; &quot;response=\&quot;#{digest}\&quot;, &quot;
+      header &lt;&lt; &quot;opaque=\&quot;#{@challenge.opaque}\&quot;&quot;
+
+      header
+    end
 
-        def initialize (res)
+    #
+    # A common parent class for Challenge and AuthInfo.
+    # Their header parsing code is here.
+    #
+    class ServerReply
 
-          s = res[header_name]
-          return nil unless s
+      def initialize (res)
 
-          s = s[7..-1] if s[0, 6] == &quot;Digest&quot;
+        s = res[header_name]
+        return nil unless s
 
-          s = s.split &quot;,&quot;
+        s = s[7..-1] if s[0, 6] == &quot;Digest&quot;
 
-          s.each do |e|
+        s = s.split &quot;,&quot;
 
-            k, v = parse_entry e
+        s.each do |e|
 
-            if k == 'stale'
-              @stale = (v.downcase == 'true')
-            elsif k == 'nc'
-              @nc = v.to_i
-            elsif k == 'qop'
-              @qop = v.split &quot;,&quot;
-            else
-              instance_variable_set &quot;@#{k}&quot;.to_sym, v
-            end
+          k, v = parse_entry e
+
+          if k == 'stale'
+            @stale = (v.downcase == 'true')
+          elsif k == 'nc'
+            @nc = v.to_i
+          elsif k == 'qop'
+            @qop = v.split &quot;,&quot;
+          else
+            instance_variable_set &quot;@#{k}&quot;.to_sym, v
           end
         end
+      end
 
-        protected
+      protected
 
-          def parse_entry (e)
+      def parse_entry (e)
 
-            k, v = e.split &quot;=&quot;, 2
-            v = v[1..-2] if v[0, 1] == '&quot;'
-            [ k.strip, v.strip ]
-          end
+        k, v = e.split '=', 2
+        v = v[1..-2] if v[0, 1] == '&quot;'
+        [ k.strip, v.strip ]
       end
+    end
 
-      #
-      # Used when parsing a 'www-authenticate' header challenge.
-      #
-      class Challenge &lt; ServerReply
+    #
+    # Used when parsing a 'www-authenticate' header challenge.
+    #
+    class Challenge &lt; ServerReply
 
-        attr_accessor \
-          :opaque, :algorithm, :qop, :stale, :nonce, :realm, :charset
+      attr_accessor \
+        :opaque, :algorithm, :qop, :stale, :nonce, :realm, :charset
 
-        def header_name
-          'www-authenticate'
-        end
+      def header_name
+        'www-authenticate'
       end
+    end
 
-      #
-      # Used when parsing a 'authentication-info' header info.
-      #
-      class AuthInfo &lt; ServerReply
+    #
+    # Used when parsing a 'authentication-info' header info.
+    #
+    class AuthInfo &lt; ServerReply
 
-        attr_accessor \
-          :cnonce, :rspauth, :nextnonce, :qop, :nc
+      attr_accessor \
+        :cnonce, :rspauth, :nextnonce, :qop, :nc
 
-        def header_name
-          'authentication-info'
-        end
+      def header_name
+        'authentication-info'
       end
+    end
   end
 
 end</diff>
      <filename>lib/rufus/verbs/digest.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
-#
 #--
-# Copyright (c) 2008, John Mettraux, jmettraux@gmail.com
+# Copyright (c) 2008-2009, John Mettraux, jmettraux@gmail.com
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
@@ -20,17 +19,9 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 #
-# (MIT license)
+# Made in Japan.
 #++
-#
 
-#
-# John Mettraux
-#
-# Made in Japan
-#
-# 2008/01/11
-#
 
 require 'uri'
 require 'yaml' # for StringIO (at least for now)
@@ -211,437 +202,436 @@ module Verbs
 
     private
 
-      #
-      # Manages various args formats :
-      #
-      #   uri
-      #   [ uri ]
-      #   [ uri, opts ]
-      #   opts
-      #
-      def self.extract_opts (args)
-
-        opts = {}
+    #
+    # Manages various args formats :
+    #
+    #   uri
+    #   [ uri ]
+    #   [ uri, opts ]
+    #   opts
+    #
+    def self.extract_opts (args)
 
-        args = [ args ] unless args.is_a?(Array)
+      opts = {}
 
-        opts = args.last \
-          if args.last.is_a?(Hash)
+      args = [ args ] unless args.is_a?(Array)
 
-        opts[:uri] = args.first \
-          if args.first.is_a?(String) or args.first.is_a?(URI)
+      opts = args.last \
+        if args.last.is_a?(Hash)
 
-        opts
-      end
+      opts[:uri] = args.first \
+        if args.first.is_a?(String) or args.first.is_a?(URI)
 
-      #
-      # Returns the value from the [request] opts or from the
-      # [endpoint] @opts.
-      #
-      def o (opts, key)
+      opts
+    end
 
-        keys = Array key
-        keys.each { |k| (v = opts[k]; return v if v != nil) }
-        keys.each { |k| (v = @opts[k]; return v if v != nil) }
-        nil
-      end
+    #
+    # Returns the value from the [request] opts or from the
+    # [endpoint] @opts.
+    #
+    def o (opts, key)
 
-      #
-      # Returns scheme, host, port, path, query
-      #
-      def compute_target (opts)
+      keys = Array key
+      keys.each { |k| (v = opts[k]; return v if v != nil) }
+      keys.each { |k| (v = @opts[k]; return v if v != nil) }
+      nil
+    end
 
-        u = opts[:uri] || opts[:u]
+    #
+    # Returns scheme, host, port, path, query
+    #
+    def compute_target (opts)
 
-        r = if opts[:host]
+      u = opts[:uri] || opts[:u]
 
-          [ opts[:scheme] || 'http',
-            opts[:host],
-            opts[:port]  || 80,
-            opts[:path] || '/',
-            opts[:query] || opts[:params] ]
+      r = if opts[:host]
 
-        elsif u
+        [ opts[:scheme] || 'http',
+          opts[:host],
+          opts[:port]  || 80,
+          opts[:path] || '/',
+          opts[:query] || opts[:params] ]
 
-          u = URI.parse u.to_s unless u.is_a?(URI)
-          [ u.scheme,
-            u.host,
-            u.port,
-            u.path,
-            query_to_h(u.query) ]
-        else
+      elsif u
 
-          []
-        end
+        u = URI.parse u.to_s unless u.is_a?(URI)
+        [ u.scheme,
+          u.host,
+          u.port,
+          u.path,
+          query_to_h(u.query) ]
+      else
 
-        opts[:scheme] = r[0] || @opts[:scheme]
-        opts[:host] = r[1] || @opts[:host]
-        opts[:port] = r[2] || @opts[:port]
-        opts[:path] = r[3] || @opts[:path]
+        []
+      end
 
-        opts[:query] =
-          r[4] ||
-          opts[:params] || opts[:query] ||
-          @opts[:query] || @opts[:params] ||
-          {}
+      opts[:scheme] = r[0] || @opts[:scheme]
+      opts[:host] = r[1] || @opts[:host]
+      opts[:port] = r[2] || @opts[:port]
+      opts[:path] = r[3] || @opts[:path]
+
+      opts[:query] =
+        r[4] ||
+        opts[:params] || opts[:query] ||
+        @opts[:query] || @opts[:params] ||
+        {}
+
+      opts.delete :path if opts[:path] == ''
+
+      opts[:c_uri] = [
+        opts[:scheme],
+        opts[:host],
+        opts[:port],
+        opts[:path],
+        opts[:query] ].inspect
+          #
+          # can be used for conditional gets
+
+      r
+    end
 
-        opts.delete :path if opts[:path] == &quot;&quot;
+    #
+    # Creates the Net::HTTP request instance.
+    #
+    # If :fake_put is set, will use Net::HTTP::Post
+    # and make sure the query string contains '_method=put' (or
+    # '_method=delete').
+    #
+    # This call will also advertise this rufus-verbs as
+    # 'accepting the gzip encoding' (in case of GET).
+    #
+    def create_request (method, opts)
 
-        opts[:c_uri] = [
-          opts[:scheme],
-          opts[:host],
-          opts[:port],
-          opts[:path],
-          opts[:query] ].inspect
-            #
-            # can be used for conditional gets
+      if (o(opts, :fake_put) and
+        (method == :put or method == :delete))
 
-        r
+        opts[:query][:_method] = method.to_s
+        method = :post
       end
 
-      #
-      # Creates the Net::HTTP request instance.
-      #
-      # If :fake_put is set, will use Net::HTTP::Post
-      # and make sure the query string contains '_method=put' (or
-      # '_method=delete').
-      #
-      # This call will also advertise this rufus-verbs as
-      # 'accepting the gzip encoding' (in case of GET).
-      #
-      def create_request (method, opts)
-
-        if (o(opts, :fake_put) and
-          (method == :put or method == :delete))
-
-          opts[:query][:_method] = method.to_s
-          method = :post
-        end
-
-        path = compute_path opts
-
-        r = eval(&quot;Net::HTTP::#{method.to_s.capitalize}&quot;).new path
-
-        r['User-Agent'] = o(opts, :user_agent)
-          # potentially overriden by opts[:headers]
+      path = compute_path opts
 
-        h = opts[:headers] || opts[:h]
-        h.each { |k, v| r[k] = v } if h
+      r = eval(&quot;Net::HTTP::#{method.to_s.capitalize}&quot;).new path
 
-        r['Accept-Encoding'] = 'gzip' \
-          if method == :get and not o(opts, :nozip)
+      r['User-Agent'] = o(opts, :user_agent)
+        # potentially overriden by opts[:headers]
 
-        r
-      end
+      h = opts[:headers] || opts[:h]
+      h.each { |k, v| r[k] = v } if h
 
-      #
-      # If @user and @pass are set, will activate basic authentication.
-      # Else if the @auth option is set, will assume it contains a Proc
-      # and will call it (with the request as a parameter).
-      #
-      # This comment is too much... Just read the code...
-      #
-      def add_authentication (req, opts)
+      r['Accept-Encoding'] = 'gzip' \
+        if method == :get and not o(opts, :nozip)
 
-        b = o(opts, :http_basic_authentication)
-        d = o(opts, :digest_authentication)
-        o = o(opts, :auth)
+      r
+    end
 
-        if b and b != false
+    #
+    # If @user and @pass are set, will activate basic authentication.
+    # Else if the @auth option is set, will assume it contains a Proc
+    # and will call it (with the request as a parameter).
+    #
+    # This comment is too much... Just read the code...
+    #
+    def add_authentication (req, opts)
 
-          req.basic_auth b[0], b[1]
+      b = o(opts, :http_basic_authentication)
+      d = o(opts, :digest_authentication)
+      o = o(opts, :auth)
 
-        elsif d and d != false
+      if b and b != false
 
-          digest_auth req, opts
+        req.basic_auth b[0], b[1]
 
-        elsif o and o != false
+      elsif d and d != false
 
-          o.call req
-        end
-      end
+        digest_auth req, opts
 
-      #
-      # In that base class, it's empty.
-      # It's implemented in ConditionalEndPoint.
-      #
-      # Only called for a GET.
-      #
-      def add_conditional_headers (req, opts)
+      elsif o and o != false
 
-        # nada
+        o.call req
       end
+    end
 
-      #
-      # Prepares a Net::HTTP instance, with potentially some
-      # https settings.
-      #
-      def prepare_http (opts)
+    #
+    # In that base class, it's empty.
+    # It's implemented in ConditionalEndPoint.
+    #
+    # Only called for a GET.
+    #
+    def add_conditional_headers (req, opts)
 
-        compute_proxy opts
+      # nada
+    end
 
-        http = Net::HTTP.new(
-          opts[:host], opts[:port],
-          opts[:proxy_host], opts[:proxy_port],
-          opts[:proxy_user], opts[:proxy_pass])
+    #
+    # Prepares a Net::HTTP instance, with potentially some
+    # https settings.
+    #
+    def prepare_http (opts)
 
-        set_timeout http, opts
+      compute_proxy opts
 
-        return http unless opts[:scheme].to_s == 'https'
+      http = Net::HTTP.new(
+        opts[:host], opts[:port],
+        opts[:proxy_host], opts[:proxy_port],
+        opts[:proxy_user], opts[:proxy_pass])
 
-        require 'net/https'
+      set_timeout http, opts
 
-        http.use_ssl = true
-        http.enable_post_connection_check = true \
-          if http.respond_to?(:enable_post_connection_check=)
+      return http unless opts[:scheme].to_s == 'https'
 
-        http.verify_mode = if o(opts, :ssl_verify_peer)
-          OpenSSL::SSL::VERIFY_PEER
-        else
-          OpenSSL::SSL::VERIFY_NONE
-        end
+      require 'net/https'
 
-        store = OpenSSL::X509::Store.new
-        store.set_default_paths
-        http.cert_store = store
+      http.use_ssl = true
+      http.enable_post_connection_check = true \
+        if http.respond_to?(:enable_post_connection_check=)
 
-        http
+      http.verify_mode = if o(opts, :ssl_verify_peer)
+        OpenSSL::SSL::VERIFY_PEER
+      else
+        OpenSSL::SSL::VERIFY_NONE
       end
 
-      #
-      # Sets both the open_timeout and the read_timeout for the http
-      # instance
-      #
-      def set_timeout (http, opts)
+      store = OpenSSL::X509::Store.new
+      store.set_default_paths
+      http.cert_store = store
+
+      http
+    end
 
-        to = o(opts, :timeout) || o(opts, :to)
-        to = to.to_i
+    #
+    # Sets both the open_timeout and the read_timeout for the http
+    # instance
+    #
+    def set_timeout (http, opts)
 
-        return if to == 0
+      to = o(opts, :timeout) || o(opts, :to)
+      to = to.to_i
 
-        http.open_timeout = to
-        http.read_timeout = to
-      end
+      return if to == 0
 
-      #
-      # Makes sure the request opts hold the proxy information.
-      #
-      # If the option :proxy is set to false, no proxy will be used.
-      #
-      def compute_proxy (opts)
+      http.open_timeout = to
+      http.read_timeout = to
+    end
 
-        p = o(opts, :proxy)
+    #
+    # Makes sure the request opts hold the proxy information.
+    #
+    # If the option :proxy is set to false, no proxy will be used.
+    #
+    def compute_proxy (opts)
 
-        return unless p
+      p = o(opts, :proxy)
 
-        u = URI.parse p.to_s
+      return unless p
 
-        raise &quot;not an HTTP[S] proxy '#{u.host}'&quot; \
-          unless u.scheme.match(/^http/)
+      u = URI.parse p.to_s
 
-        opts[:proxy_host] = u.host
-        opts[:proxy_port] = u.port
-        opts[:proxy_user] = u.user
-        opts[:proxy_pass] = u.password
-      end
+      raise &quot;not an HTTP[S] proxy '#{u.host}'&quot; \
+        unless u.scheme.match(/^http/)
 
-      #
-      # Determines the full path of the request (path_info and
-      # query_string).
-      #
-      # For example :
-      #
-      #   /items/4?style=whatever&amp;maxcount=12
-      #
-      def compute_path (opts)
-
-        b = o(opts, :base)
-        r = o(opts, [ :res, :resource ])
-        i = o(opts, :id)
-
-        path = o(opts, :path)
-
-        if b or r or i
-          path = &quot;&quot;
-          path = &quot;/#{b}&quot; if b
-          path += &quot;/#{r}&quot; if r
-          path += &quot;/#{i}&quot; if i
-        end
+      opts[:proxy_host] = u.host
+      opts[:proxy_port] = u.port
+      opts[:proxy_user] = u.user
+      opts[:proxy_pass] = u.password
+    end
 
-        path = path[1..-1] if path[0..1] == '//'
+    #
+    # Determines the full path of the request (path_info and
+    # query_string).
+    #
+    # For example :
+    #
+    #   /items/4?style=whatever&amp;maxcount=12
+    #
+    def compute_path (opts)
 
-        query = opts[:query] || opts[:params]
+      b = o(opts, :base)
+      r = o(opts, [ :res, :resource ])
+      i = o(opts, :id)
 
-        return path if not query or query.size &lt; 1
+      path = o(opts, :path)
 
-        path + '?' + h_to_query(query, opts)
+      if b or r or i
+        path = b ? &quot;/#{b}&quot; : ''
+        path += &quot;/#{r}&quot; if r
+        path += &quot;/#{i}&quot; if i
       end
 
-      #
-      #   &quot;a=A&amp;b=B&quot; -&gt; { &quot;a&quot; =&gt; &quot;A&quot;, &quot;b&quot; =&gt; &quot;B&quot; }
-      #
-      def query_to_h (q)
+      path = path[1..-1] if path[0..1] == '//'
 
-        return nil unless q
+      query = opts[:query] || opts[:params]
 
-        q.split(&quot;&amp;&quot;).inject({}) do |r, e|
-          s = e.split(&quot;=&quot;)
-          r[s[0]] = s[1]
-          r
-        end
-      end
+      return path if not query or query.size &lt; 1
 
-      #
-      #   { &quot;a&quot; =&gt; &quot;A&quot;, &quot;b&quot; =&gt; &quot;B&quot; } -&gt; &quot;a=A&amp;b=B&quot;
-      #
-      def h_to_query (h, opts)
+      path + '?' + h_to_query(query, opts)
+    end
 
-        h.entries.collect { |k, v|
-          unless o(opts, :no_escape)
-            k = URI.escape k.to_s
-            v = URI.escape v.to_s
-          end
-          &quot;#{k}=#{v}&quot;
-        }.join(&quot;&amp;&quot;)
-      end
+    #
+    #   &quot;a=A&amp;b=B&quot; -&gt; { &quot;a&quot; =&gt; &quot;A&quot;, &quot;b&quot; =&gt; &quot;B&quot; }
+    #
+    def query_to_h (q)
 
-      #
-      # Fills the request body (with the content of :d or :fd).
-      #
-      def add_payload (req, opts, &amp;block)
-
-        d = opts[:d] || opts[:data]
-        fd = opts[:fd] || opts[:form_data]
-
-        if d
-          req.body = d
-        elsif fd
-          sep = opts[:fd_sep] #|| nil
-          req.set_form_data fd, sep
-        elsif block
-          req.body = block.call req
-        else
-          req.body = &quot;&quot;
-        end
+      return nil unless q
+
+      q.split('&amp;').inject({}) do |r, e|
+        s = e.split('=')
+        r[s[0]] = s[1]
+        r
       end
+    end
+
+    #
+    #   { &quot;a&quot; =&gt; &quot;A&quot;, &quot;b&quot; =&gt; &quot;B&quot; } -&gt; &quot;a=A&amp;b=B&quot;
+    #
+    def h_to_query (h, opts)
 
-      #
-      # Handles the server response.
-      # Eventually follows redirections.
-      #
-      # Once the final response has been hit, will make sure
-      # it's decompressed.
-      #
-      def handle_response (method, res, opts)
+      h.entries.collect { |k, v|
+        unless o(opts, :no_escape)
+          k = URI.escape k.to_s
+          v = URI.escape v.to_s
+        end
+        &quot;#{k}=#{v}&quot;
+      }.join('&amp;')
+    end
 
-        nored = o(opts, [ :no_redirections, :noredir ])
+    #
+    # Fills the request body (with the content of :d or :fd).
+    #
+    def add_payload (req, opts, &amp;block)
+
+      d = opts[:d] || opts[:data]
+      fd = opts[:fd] || opts[:form_data]
+
+      if d
+        req.body = d
+      elsif fd
+        sep = opts[:fd_sep] #|| nil
+        req.set_form_data fd, sep
+      elsif block
+        req.body = block.call req
+      else
+        req.body = ''
+      end
+    end
 
-        #if res.is_a?(Net::HTTPRedirection)
-        if [ 301, 303, 307 ].include?(res.code.to_i) and (nored != true)
+    #
+    # Handles the server response.
+    # Eventually follows redirections.
+    #
+    # Once the final response has been hit, will make sure
+    # it's decompressed.
+    #
+    def handle_response (method, res, opts)
 
-          maxr = o(opts, :max_redirections)
+      nored = o(opts, [ :no_redirections, :noredir ])
 
-          if maxr
-            maxr = maxr - 1
-            raise &quot;too many redirections&quot; if maxr == -1
-            opts[:max_redirections] = maxr
-          end
+      #if res.is_a?(Net::HTTPRedirection)
+      if [ 301, 302, 303, 307 ].include?(res.code.to_i) and (nored != true)
 
-          location = res['Location']
+        maxr = o(opts, :max_redirections)
 
-          prev_host = [ opts[:scheme], opts[:host] ]
+        if maxr
+          maxr = maxr - 1
+          raise 'too many redirections' if maxr == -1
+          opts[:max_redirections] = maxr
+        end
 
-          if location.match /^http/
-            u = URI::parse location
-            opts[:scheme] = u.scheme
-            opts[:host] = u.host
-            opts[:port] = u.port
-            opts[:path] = u.path
-            opts[:query] = u.query
-          else
-            opts[:path], opts[:query] = location.split &quot;?&quot;
-          end
+        location = res['Location']
 
-          if (authentication_is_on?(opts) and
-            [ opts[:scheme], opts[:host] ] != prev_host)
+        prev_host = [ opts[:scheme], opts[:host] ]
 
-            raise(
-              &quot;getting redirected to #{location} while &quot; +
-              &quot;authentication is on. Stopping.&quot;)
-          end
+        if location.match /^http/
+          u = URI::parse location
+          opts[:scheme] = u.scheme
+          opts[:host] = u.host
+          opts[:port] = u.port
+          opts[:path] = u.path
+          opts[:query] = u.query
+        else
+          opts[:path], opts[:query] = location.split &quot;?&quot;
+        end
 
-          opts[:query] = query_to_h opts[:query]
+        if (authentication_is_on?(opts) and
+          [ opts[:scheme], opts[:host] ] != prev_host)
 
-          return request(method, opts)
-            #
-            # following the redirection
+          raise(
+            &quot;getting redirected to #{location} while &quot; +
+            &quot;authentication is on. Stopping.&quot;)
         end
 
-        decompress res
+        opts[:query] = query_to_h opts[:query]
 
-        res
+        return request(method, opts)
+          #
+          # following the redirection
       end
 
-      #
-      # Returns an array of symbols, like for example
-      #
-      #   [ :get, :post ]
-      #
-      # obtained by parsing the 'Allow' response header.
-      #
-      # This method is used to provide the result of an OPTIONS
-      # HTTP method.
-      #
-      def parse_options (res)
+      decompress res
 
-        s = res['Allow']
+      res
+    end
 
-        return [] unless s
+    #
+    # Returns an array of symbols, like for example
+    #
+    #   [ :get, :post ]
+    #
+    # obtained by parsing the 'Allow' response header.
+    #
+    # This method is used to provide the result of an OPTIONS
+    # HTTP method.
+    #
+    def parse_options (res)
 
-        s.split(&quot;,&quot;).collect do |m|
-          m.strip.downcase.to_sym
-        end
-      end
+      s = res['Allow']
 
-      #
-      # Returns true if the current request has authentication
-      # going on.
-      #
-      def authentication_is_on? (opts)
+      return [] unless s
 
-        (o(opts, [ :http_basic_authentication, :hba, :auth ]) != nil)
+      s.split(',').collect do |m|
+        m.strip.downcase.to_sym
       end
+    end
+
+    #
+    # Returns true if the current request has authentication
+    # going on.
+    #
+    def authentication_is_on? (opts)
 
-      #
-      # Inflates the response body if necessary.
-      #
-      def decompress (res)
+      (o(opts, [ :http_basic_authentication, :hba, :auth ]) != nil)
+    end
+
+    #
+    # Inflates the response body if necessary.
+    #
+    def decompress (res)
 
-        if res['content-encoding'] == 'gzip'
+      if res['content-encoding'] == 'gzip'
 
-          class &lt;&lt; res
+        class &lt;&lt; res
 
-            attr_accessor :deflated_body
+          attr_accessor :deflated_body
 
-            alias :old_body :body
+          alias :old_body :body
 
-            def body
-              @deflated_body || old_body
-            end
+          def body
+            @deflated_body || old_body
           end
-            #
-            # reopened the response to add
-            # a 'deflated_body' attr and let the the body
-            # method point to it
+        end
+          #
+          # reopened the response to add
+          # a 'deflated_body' attr and let the the body
+          # method point to it
 
-          # now deflate...
+        # now deflate...
 
-          io = StringIO.new res.body
-          gz = Zlib::GzipReader.new io
-          res.deflated_body = gz.read
-          gz.close
-        end
+        io = StringIO.new res.body
+        gz = Zlib::GzipReader.new io
+        res.deflated_body = gz.read
+        gz.close
       end
+    end
   end
 end
 end</diff>
      <filename>lib/rufus/verbs/endpoint.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
-#
 #--
-# Copyright (c) 2008, John Mettraux, jmettraux@gmail.com
+# Copyright (c) 2008-2009, John Mettraux, jmettraux@gmail.com
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
@@ -20,17 +19,9 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 #
-# (MIT license)
+# Made in Japan.
 #++
-#
 
-#
-# John Mettraux
-#
-# Made in Japan
-#
-# 2008/03/31
-#
 
 module Rufus
 module Verbs
@@ -42,71 +33,71 @@ module Verbs
 
     protected
 
-      #
-      # logs a unique message to the verbose channel (if any).
-      #
-      def vlog (opts, msg)
+    #
+    # logs a unique message to the verbose channel (if any).
+    #
+    def vlog (opts, msg)
 
-        channel = get_channel(opts) or return
+      channel = get_channel(opts) or return
 
-        channel &lt;&lt; msg
-      end
-
-      #
-      # logs the outgoing request
-      #
-      def vlog_request (opts, req)
+      channel &lt;&lt; msg
+    end
 
-        channel = get_channel(opts) or return
+    #
+    # logs the outgoing request
+    #
+    def vlog_request (opts, req)
 
-        channel &lt;&lt; &quot;&gt; #{req.method} #{req.path}\n&quot;
+      channel = get_channel(opts) or return
 
-        req.each do |k, v|
-          channel &lt;&lt; &quot;&gt; #{k}: #{v}\n&quot;
-        end
+      channel &lt;&lt; &quot;&gt; #{req.method} #{req.path}\n&quot;
 
-        channel &lt;&lt; &quot;&gt;\n&quot;
+      req.each do |k, v|
+        channel &lt;&lt; &quot;&gt; #{k}: #{v}\n&quot;
       end
 
-      def vlog_http (opts, http)
+      channel &lt;&lt; &quot;&gt;\n&quot;
+    end
 
-        channel = get_channel(opts) or return
+    def vlog_http (opts, http)
 
-        channel &lt;&lt; &quot;* #{http.address}:#{http.port}\n&quot;
-        channel &lt;&lt; &quot;*\n&quot;
-      end
+      channel = get_channel(opts) or return
 
-      #
-      # logs the incoming response
-      #
-      def vlog_response (opts, res)
+      channel &lt;&lt; &quot;* #{http.address}:#{http.port}\n&quot;
+      channel &lt;&lt; &quot;*\n&quot;
+    end
 
-        channel = get_channel(opts) or return
+    #
+    # logs the incoming response
+    #
+    def vlog_response (opts, res)
 
-        channel &lt;&lt; &quot;&lt; #{res.code} #{res.message}\n&quot;
-        channel &lt;&lt; &quot;&lt;\n&quot;
+      channel = get_channel(opts) or return
 
-        res.each do |k, v|
-          channel &lt;&lt; &quot;&lt; #{k}: #{v}\n&quot;
-        end
+      channel &lt;&lt; &quot;&lt; #{res.code} #{res.message}\n&quot;
+      channel &lt;&lt; &quot;&lt;\n&quot;
 
-        channel &lt;&lt; &quot;&lt;\n&quot;
+      res.each do |k, v|
+        channel &lt;&lt; &quot;&lt; #{k}: #{v}\n&quot;
       end
 
+      channel &lt;&lt; &quot;&lt;\n&quot;
+    end
+
     private
 
-      def get_channel (opts)
+    def get_channel (opts)
 
-        v = o(opts, [ :verbose, :v ])
+      v = o(opts, [ :verbose, :v ])
 
-        return nil if (not v) or (v.to_s == 'false')
+      return nil if (not v) or (v.to_s == 'false')
 
-        v = $stdout if v.to_s == 'true'
+      v = $stdout if v.to_s == 'true'
 
-        return nil unless v.is_a?(IO)
+      return nil unless v.is_a?(IO)
 
-        v
-      end
+      v
+    end
   end
 
 end</diff>
      <filename>lib/rufus/verbs/verbose.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
-#
 #--
-# Copyright (c) 2008, John Mettraux, jmettraux@gmail.com
+# Copyright (c) 2008-2009, John Mettraux, jmettraux@gmail.com
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the &quot;Software&quot;), to deal
@@ -20,17 +19,8 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 # THE SOFTWARE.
 #
-# (MIT license)
+# Made in Japan.
 #++
-#
-
-#
-# John Mettraux
-#
-# Made in Japan
-#
-# 2008/01/21
-#
 
 
 module Rufus
@@ -39,7 +29,7 @@ module Verbs
   #
   # The version of this rufus-verbs [gem]
   #
-  VERSION = '0.11'
+  VERSION = '1.0.0'
 end
 end
 </diff>
      <filename>lib/rufus/verbs/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,40 +7,37 @@
 # Sun Jan 13 12:33:03 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
-
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class Auth0Test &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
-    #
-    # Using an items server with the authentication on.
-    #
-    def setup
+  #
+  # Using an items server with the authentication on.
+  #
+  def setup
 
-        @server = ItemServer.new :auth =&gt; :basic
-        @server.start
-    end
+    @server = ItemServer.new :auth =&gt; :basic
+    @server.start
+  end
 
 
-    def test_0
+  def test_0
 
-        #res = get :uri =&gt; &quot;http://localhost:7777/items&quot;
-        #assert_equal 200, res.code.to_i
-        #assert_equal &quot;{}&quot;, res.body.strip
-        expect 401, nil, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
+    #res = get :uri =&gt; &quot;http://localhost:7777/items&quot;
+    #assert_equal 200, res.code.to_i
+    #assert_equal &quot;{}&quot;, res.body.strip
+    expect 401, nil, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
 
-        expect 401, nil, get(
-            :uri =&gt; &quot;http://localhost:7777/items&quot;, 
-            :http_basic_authentication =&gt; [ &quot;toto&quot;, &quot;wrong&quot; ])
+    expect 401, nil, get(
+      :uri =&gt; &quot;http://localhost:7777/items&quot;,
+      :http_basic_authentication =&gt; [ &quot;toto&quot;, &quot;wrong&quot; ])
 
-        expect 200, {}, get(
-            :uri =&gt; &quot;http://localhost:7777/items?a&quot;, 
-            :http_basic_authentication =&gt; [ &quot;toto&quot;, &quot;toto&quot; ])
-    end
+    expect 200, {}, get(
+      :uri =&gt; &quot;http://localhost:7777/items?a&quot;,
+      :http_basic_authentication =&gt; [ &quot;toto&quot;, &quot;toto&quot; ])
+  end
 end</diff>
      <filename>test/auth0_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,10 +7,7 @@
 # Sun Jan 13 12:33:03 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
-
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class Auth1Test &lt; Test::Unit::TestCase</diff>
      <filename>test/auth1_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,43 +7,41 @@
 # Sun Jan 13 20:02:25 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class BlockTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_0
-
-        res = post :uri =&gt; &quot;http://localhost:7777/items/0&quot; do
-            &quot;Fedor&quot; +
-            &quot;Fedorovitch&quot;
-        end
-        assert_equal 201, res.code.to_i
-        assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
+  def test_0
 
+    res = post :uri =&gt; &quot;http://localhost:7777/items/0&quot; do
+      &quot;Fedor&quot; +
+      &quot;Fedorovitch&quot;
+    end
+    assert_equal 201, res.code.to_i
+    assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
 
-        expect(
-            200, 
-            { 0 =&gt; &quot;FedorFedorovitch&quot; }, 
-            get(:uri =&gt; &quot;http://localhost:7777/things&quot;))
 
-        res = post :uri =&gt; &quot;http://localhost:7777/items/1&quot; do |req|
-            # do whatever with the request [headers]
-            &quot;John&quot;
-        end
-        assert_equal 201, res.code.to_i
-        assert_equal &quot;http://localhost:7777/items/1&quot;, res['Location']
+    expect(
+      200,
+      { 0 =&gt; &quot;FedorFedorovitch&quot; },
+      get(:uri =&gt; &quot;http://localhost:7777/things&quot;))
 
-        expect(
-            200, 
-            { 0 =&gt; &quot;FedorFedorovitch&quot;, 1 =&gt; &quot;John&quot; }, 
-            get(:uri =&gt; &quot;http://localhost:7777/things&quot;))
+    res = post :uri =&gt; &quot;http://localhost:7777/items/1&quot; do |req|
+      # do whatever with the request [headers]
+      &quot;John&quot;
     end
+    assert_equal 201, res.code.to_i
+    assert_equal &quot;http://localhost:7777/items/1&quot;, res['Location']
+
+    expect(
+      200,
+      { 0 =&gt; &quot;FedorFedorovitch&quot;, 1 =&gt; &quot;John&quot; },
+      get(:uri =&gt; &quot;http://localhost:7777/things&quot;))
+  end
 end</diff>
      <filename>test/block_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,43 +7,41 @@
 # Wed Jan 16 13:54:36 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class ConditionalTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_1
+  def test_1
 
-        ep = ConditionalEndPoint.new(:host =&gt; &quot;localhost&quot;, :port =&gt; 7777)
-        expect 200, {}, ep.get(:resource =&gt; &quot;items&quot;)
+    ep = ConditionalEndPoint.new(:host =&gt; &quot;localhost&quot;, :port =&gt; 7777)
+    expect 200, {}, ep.get(:resource =&gt; &quot;items&quot;)
 
-        res = ep.put :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
-            &quot;blockdata&quot;
-        end
-        assert_equal 404, res.code.to_i
+    res = ep.put :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
+      &quot;blockdata&quot;
+    end
+    assert_equal 404, res.code.to_i
 
-        res = ep.post :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
-            &quot;blockdata&quot;
-        end
-        assert_equal 201, res.code.to_i
-        assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
+    res = ep.post :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
+      &quot;blockdata&quot;
+    end
+    assert_equal 201, res.code.to_i
+    assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
 
-        res = expect 200, { 0 =&gt; &quot;blockdata&quot; }, ep.get(:res =&gt; &quot;items&quot;)
-        assert_kind_of Net::HTTPResponse, res
-        assert_respond_to res, :lastmod
-        i = res.object_id
-        #p res.to_hash
+    res = expect 200, { 0 =&gt; &quot;blockdata&quot; }, ep.get(:res =&gt; &quot;items&quot;)
+    assert_kind_of Net::HTTPResponse, res
+    assert_respond_to res, :lastmod
+    i = res.object_id
+    #p res.to_hash
 
-        res = expect 200, { 0 =&gt; &quot;blockdata&quot; }, ep.get(:res =&gt; &quot;items&quot;)
-        assert_equal i, res.object_id
+    res = expect 200, { 0 =&gt; &quot;blockdata&quot; }, ep.get(:res =&gt; &quot;items&quot;)
+    assert_equal i, res.object_id
 
-        assert_equal 1, ep.cache_current_size
-    end
+    assert_equal 1, ep.cache_current_size
+  end
 end</diff>
      <filename>test/conditional_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,139 +7,137 @@
 # Sat Jan 19 18:22:48 JST 2008
 #
 
-require 'test/unit'
-#require 'testbase'
 
-require 'rufus/verbs'
-require 'rufus/verbs/cookies'
+require File.dirname(__FILE__) + '/base.rb'
+#require 'rufus/verbs/cookies'
 
 
 class Cookie0Test &lt; Test::Unit::TestCase
-    #include TestBaseMixin
+  #include TestBaseMixin
 
-    include Rufus::Verbs::CookieMixin
-    include Rufus::Verbs::HostMixin
+  include Rufus::Verbs::CookieMixin
+  include Rufus::Verbs::HostMixin
 
-    #
-    # testing split_host(s)
-    #
-    def test_0
+  #
+  # testing split_host(s)
+  #
+  def test_0
 
-        assert_equal [ 'localhost', nil ], split_host('localhost')
-        assert_equal [ 'benz', '.car.co.nz' ], split_host('benz.car.co.nz')
-        assert_equal [ '127.0.0.1', nil ], split_host('127.0.0.1')
-        assert_equal [ '::1', nil ], split_host('::1')
-    end
+    assert_equal [ 'localhost', nil ], split_host('localhost')
+    assert_equal [ 'benz', '.car.co.nz' ], split_host('benz.car.co.nz')
+    assert_equal [ '127.0.0.1', nil ], split_host('127.0.0.1')
+    assert_equal [ '::1', nil ], split_host('::1')
+  end
 
-    #
-    # testing the CookieJar
-    #
-    def test_1
+  #
+  # testing the CookieJar
+  #
+  def test_1
 
-        cookie0 = TestCookie.new
-        cookie1 = TestCookie.new
+    cookie0 = TestCookie.new
+    cookie1 = TestCookie.new
 
-        jar = Rufus::Verbs::CookieJar.new 77
-        assert_equal 0, jar.size
+    jar = Rufus::Verbs::CookieJar.new 77
+    assert_equal 0, jar.size
 
-        jar.add_cookie(&quot;.rubyforge.org&quot;, &quot;/&quot;, cookie0)
-        assert_equal 1, jar.size
-        assert_equal [ cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/main&quot;)
+    jar.add_cookie(&quot;.rubyforge.org&quot;, &quot;/&quot;, cookie0)
+    assert_equal 1, jar.size
+    assert_equal [ cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/main&quot;)
 
-        jar.add_cookie(&quot;rufus.rubyforge.org&quot;, &quot;/sub&quot;, cookie1)
-        assert_equal 2, jar.size
-        assert_equal [ cookie1, cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/sub/0&quot;)
-        assert_equal [ cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/main&quot;)
-        assert_equal [ cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/&quot;)
+    jar.add_cookie(&quot;rufus.rubyforge.org&quot;, &quot;/sub&quot;, cookie1)
+    assert_equal 2, jar.size
+    assert_equal [ cookie1, cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/sub/0&quot;)
+    assert_equal [ cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/main&quot;)
+    assert_equal [ cookie0 ], jar.fetch_cookies(&quot;rufus.rubyforge.org&quot;, &quot;/&quot;)
 
-        jar.remove_cookie(&quot;rufus.rubyforge.org&quot;, &quot;/sub&quot;, cookie1)
-        assert_equal 1, jar.size
-    end
+    jar.remove_cookie(&quot;rufus.rubyforge.org&quot;, &quot;/sub&quot;, cookie1)
+    assert_equal 1, jar.size
+  end
 
-    #
-    # testing cookie_acceptable?(opts, cookie)
-    #
-    def test_2
+  #
+  # testing cookie_acceptable?(opts, cookie)
+  #
+  def test_2
 
-        jar = Rufus::Verbs::CookieJar.new 77
+    jar = Rufus::Verbs::CookieJar.new 77
 
-        opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/' }
-        c = TestCookie.new '.rubyforge.org', '/'
-        r = TestResponse.new opts
-        assert cookie_acceptable?(opts, r, c)
+    opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/' }
+    c = TestCookie.new '.rubyforge.org', '/'
+    r = TestResponse.new opts
+    assert cookie_acceptable?(opts, r, c)
 
-        # * The value for the Domain attribute contains no embedded dots
-        #   or does not start with a dot.
+    # * The value for the Domain attribute contains no embedded dots
+    #   or does not start with a dot.
 
-        opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/' }
-        c = TestCookie.new 'rufus.rubyforge.org', '/'
-        r = TestResponse.new opts
-        assert ! cookie_acceptable?(opts, r, c)
+    opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/' }
+    c = TestCookie.new 'rufus.rubyforge.org', '/'
+    r = TestResponse.new opts
+    assert ! cookie_acceptable?(opts, r, c)
 
-        opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/' }
-        c = TestCookie.new 'org', '/'
-        r = TestResponse.new opts
-        assert ! cookie_acceptable?(opts, r, c)
+    opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/' }
+    c = TestCookie.new 'org', '/'
+    r = TestResponse.new opts
+    assert ! cookie_acceptable?(opts, r, c)
 
-        # * The value for the Path attribute is not a prefix of the 
-        #   request-URI.
+    # * The value for the Path attribute is not a prefix of the 
+    #   request-URI.
 
-        opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/this' }
-        c = TestCookie.new '.rubyforge.org', '/that'
-        r = TestResponse.new opts
-        assert ! cookie_acceptable?(opts, r, c)
+    opts = { :host =&gt; 'rufus.rubyforge.org', :path =&gt; '/this' }
+    c = TestCookie.new '.rubyforge.org', '/that'
+    r = TestResponse.new opts
+    assert ! cookie_acceptable?(opts, r, c)
 
-        # * The value for the request-host does not domain-match the 
-        #   Domain attribute.
+    # * The value for the request-host does not domain-match the 
+    #   Domain attribute.
 
-        opts = { :host =&gt; 'rufus.rubyforg.org', :path =&gt; '/' }
-        c = TestCookie.new '.rubyforge.org', '/'
-        r = TestResponse.new opts
-        assert ! cookie_acceptable?(opts, r, c)
+    opts = { :host =&gt; 'rufus.rubyforg.org', :path =&gt; '/' }
+    c = TestCookie.new '.rubyforge.org', '/'
+    r = TestResponse.new opts
+    assert ! cookie_acceptable?(opts, r, c)
 
-        # * The request-host is a FQDN (not IP address) and has the form
-        #   HD, where D is the value of the Domain attribute, and H is a
-        #   string that contains one or more dots.
-        
-        # implicit...
-    end
+    # * The request-host is a FQDN (not IP address) and has the form
+    #   HD, where D is the value of the Domain attribute, and H is a
+    #   string that contains one or more dots.
 
-    #def test_webrick_cookie
-    #    require 'webrick/cookie'
-    #    cookie = &quot;PREF=ID=18da97219de4985:TM=12007507:LM=12007507:S=Guc1JcA15ySZYl2n; expires=Mon, 18-Jan-2010 09:30:37 GMT; path=/; domain=.google.com&quot;
-    #    p WEBrick::Cookie.parse_set_cookie(cookie)
-    #    p Rufus::Verbs::Cookie.parse_set_cookie(cookie)
-    #end
+    # implicit...
+  end
 
-    protected
+  #def test_webrick_cookie
+  #  require 'webrick/cookie'
+  #  cookie = &quot;PREF=ID=18da97219de4985:TM=12007507:LM=12007507:S=Guc1JcA15ySZYl2n; expires=Mon, 18-Jan-2010 09:30:37 GMT; path=/; domain=.google.com&quot;
+  #  p WEBrick::Cookie.parse_set_cookie(cookie)
+  #  p Rufus::Verbs::Cookie.parse_set_cookie(cookie)
+  #end
 
-        class TestCookie
+  protected
 
-            attr_reader :domain, :path, :name
+  class TestCookie
 
-            def initialize (domain=nil, path=nil, name='whatever')
+    attr_reader :domain, :path, :name
 
-                @domain = domain
-                @path = path
-                @name = name
-            end
-        end
+    def initialize (domain=nil, path=nil, name='whatever')
 
-        class TestResponse
+      @domain = domain
+      @path = path
+      @name = name
+    end
+  end
 
-            def initialize (opts)
+  class TestResponse
 
-                @path = opts[:path]
-            end
+    def initialize (opts)
 
-            def request
+      @path = opts[:path]
+    end
+
+    def request
 
-                r = Object.new
-                class &lt;&lt; r
-                    attr_accessor :path
-                end
-                r.path = @path
-                r
-            end
-        end
+      r = Object.new
+      class &lt;&lt; r
+        attr_accessor :path
+      end
+      r.path = @path
+      r
+    end
+  end
 end</diff>
      <filename>test/cookie0_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,54 +7,52 @@
 # Sun Jan 13 12:33:03 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class Cookie1Test &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_0
+  def test_0
 
-        ep = EndPoint.new :cookies =&gt; true
-        class &lt;&lt; ep
-            attr_reader :cookies
-        end
+    ep = EndPoint.new :cookies =&gt; true
+    class &lt;&lt; ep
+      attr_reader :cookies
+    end
 
-        assert_equal 0, ep.cookies.size
+    assert_equal 0, ep.cookies.size
 
-        ep.get :uri =&gt; &quot;http://localhost:7777/cookie&quot;
-        assert_equal 1, ep.cookies.size
+    ep.get :uri =&gt; &quot;http://localhost:7777/cookie&quot;
+    assert_equal 1, ep.cookies.size
 
-        req = ep.get :uri =&gt; &quot;http://localhost:7777/cookie&quot;, :dry_run =&gt; true
-        assert_match /^tcookie=\d*$/, req['Cookie']
-    end
+    req = ep.get :uri =&gt; &quot;http://localhost:7777/cookie&quot;, :dry_run =&gt; true
+    assert_match /^tcookie=\d*$/, req['Cookie']
+  end
 
-    def test_1
+  def test_1
 
-        ep0 = EndPoint.new :cookies =&gt; true
-        ep1 = EndPoint.new :cookies =&gt; true
+    ep0 = EndPoint.new :cookies =&gt; true
+    ep1 = EndPoint.new :cookies =&gt; true
 
-        ep0.post(&quot;http://localhost:7777/cookie&quot;) { &quot;smurf0&quot; }
-        ep1.post(&quot;http://localhost:7777/cookie&quot;) { &quot;smurf1&quot; }
+    ep0.post(&quot;http://localhost:7777/cookie&quot;) { &quot;smurf0&quot; }
+    ep1.post(&quot;http://localhost:7777/cookie&quot;) { &quot;smurf1&quot; }
 
-        expect 200, [ 'smurf0' ], ep0.get(&quot;http://localhost:7777/cookie&quot;)
-        expect 200, [ 'smurf1' ], ep1.get(&quot;http://localhost:7777/cookie&quot;)
-    end
+    expect 200, [ 'smurf0' ], ep0.get(&quot;http://localhost:7777/cookie&quot;)
+    expect 200, [ 'smurf1' ], ep1.get(&quot;http://localhost:7777/cookie&quot;)
+  end
 
-    def test_2
+  def test_2
 
-        ep = EndPoint.new :cookies =&gt; false # explicitely
+    ep = EndPoint.new :cookies =&gt; false # explicitely
 
-        res0 = ep.post(&quot;http://localhost:7777/cookie&quot;) { &quot;smurf0&quot; }
-        res1 = expect 200, [], ep.get(&quot;http://localhost:7777/cookie&quot;)
+    res0 = ep.post(&quot;http://localhost:7777/cookie&quot;) { &quot;smurf0&quot; }
+    res1 = expect 200, [], ep.get(&quot;http://localhost:7777/cookie&quot;)
 
-        assert_not_equal res0['Set-Cookie'], res1['Set-Cookie']
-    end
+    assert_not_equal res0['Set-Cookie'], res1['Set-Cookie']
+  end
 end
 </diff>
      <filename>test/cookie1_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,64 +7,63 @@
 # Tue Jan 15 09:26:45 JST 2008
 #
 
-require 'test/unit'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class DryRunTest &lt; Test::Unit::TestCase
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_0
+  def test_0
 
-        req = put(
-            :dry_run =&gt; true, 
-            :uri =&gt; &quot;http://localhost:7777/items/1&quot;, 
-            :params =&gt; { &quot;a&quot; =&gt; &quot;A&quot;, :b =&gt; :B })
+    req = put(
+      :dry_run =&gt; true,
+      :uri =&gt; &quot;http://localhost:7777/items/1&quot;,
+      :params =&gt; { &quot;a&quot; =&gt; &quot;A&quot;, :b =&gt; :B })
 
-        assert_equal &quot;/items/1?a=A&amp;b=B&quot;, req.path
+    assert_equal &quot;/items/1?a=A&amp;b=B&quot;, req.path
 
-        req = post(
-            :dry_run =&gt; true, 
-            :uri =&gt; &quot;http://localhost:7777/items/1&quot;, 
-            :params =&gt; { &quot;a&quot; =&gt; &quot;A&quot;, :b =&gt; :B })
+    req = post(
+      :dry_run =&gt; true,
+      :uri =&gt; &quot;http://localhost:7777/items/1&quot;,
+      :params =&gt; { &quot;a&quot; =&gt; &quot;A&quot;, :b =&gt; :B })
 
-        assert_equal &quot;/items/1?a=A&amp;b=B&quot;, req.path
+    assert_equal &quot;/items/1?a=A&amp;b=B&quot;, req.path
 
-        req = put(
-            :dry_run =&gt; true, 
-            :uri =&gt; &quot;http://localhost:7777/items/1&quot;, 
-            :query =&gt; { &quot;a&quot; =&gt; &quot;A&quot;, :b =&gt; :B })
+    req = put(
+      :dry_run =&gt; true,
+      :uri =&gt; &quot;http://localhost:7777/items/1&quot;,
+      :query =&gt; { &quot;a&quot; =&gt; &quot;A&quot;, :b =&gt; :B })
 
-        assert_equal &quot;/items/1?a=A&amp;b=B&quot;, req.path
+    assert_equal &quot;/items/1?a=A&amp;b=B&quot;, req.path
 
-        req = put(
-            &quot;http://localhost:7777/items/1?a=A&quot;, :d =&gt; &quot;toto&quot;, :dry_run =&gt; true)
+    req = put(
+      &quot;http://localhost:7777/items/1?a=A&quot;, :d =&gt; &quot;toto&quot;, :dry_run =&gt; true)
 
-        assert_equal &quot;/items/1?a=A&quot;, req.path
-        assert_equal &quot;toto&quot;, req.body
-    end
+    assert_equal &quot;/items/1?a=A&quot;, req.path
+    assert_equal &quot;toto&quot;, req.body
+  end
 
-    def test_1
+  def test_1
 
-        ep = Rufus::Verbs::EndPoint.new(
-            :host =&gt; 'localhost',
-            :resource =&gt; 'whatever')
+    ep = Rufus::Verbs::EndPoint.new(
+      :host =&gt; 'localhost',
+      :resource =&gt; 'whatever')
 
-        req = ep.get(
-            :dry_run =&gt; true,
-            :resource =&gt; 'other',
-            :params =&gt; { 'a' =&gt; 'A', 'b' =&gt; 'B' })
+    req = ep.get(
+      :dry_run =&gt; true,
+      :resource =&gt; 'other',
+      :params =&gt; { 'a' =&gt; 'A', 'b' =&gt; 'B' })
 
-        assert_equal &quot;/other?a=A&amp;b=B&quot;, req.path
+    assert_equal &quot;/other?a=A&amp;b=B&quot;, req.path
 
-        req = ep.post(
-            :dry_run =&gt; true,
-            :resource =&gt; 'other',
-            :query =&gt; { 'a' =&gt; 'A', 'b' =&gt; 'B' })
-        
-        assert_equal &quot;/other?a=A&amp;b=B&quot;, req.path
-    end
+    req = ep.post(
+      :dry_run =&gt; true,
+      :resource =&gt; 'other',
+      :query =&gt; { 'a' =&gt; 'A', 'b' =&gt; 'B' })
+
+    assert_equal &quot;/other?a=A&amp;b=B&quot;, req.path
+  end
 end</diff>
      <filename>test/dryrun_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,32 +7,30 @@
 # Tue Feb 12 23:10:54 JST 2008
 #
 
-require 'test/unit'
-
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class EscapeTest &lt; Test::Unit::TestCase
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_0
+  def test_0
 
-        req = put(
-            :dry_run =&gt; true, 
-            :uri =&gt; &quot;http://localhost:7777/items/1&quot;, 
-            :query =&gt; { &quot;a&quot; =&gt; &quot;hontou ni ?&quot; })
+    req = put(
+      :dry_run =&gt; true,
+      :uri =&gt; &quot;http://localhost:7777/items/1&quot;,
+      :query =&gt; { &quot;a&quot; =&gt; &quot;hontou ni ?&quot; })
 
-        assert_equal &quot;/items/1?a=hontou%20ni%20?&quot;, req.path
+    assert_equal &quot;/items/1?a=hontou%20ni%20?&quot;, req.path
 
-        req = put(
-            :dry_run =&gt; true, 
-            :uri =&gt; &quot;http://localhost:7777/items/1&quot;, 
-            :params =&gt; { &quot;a&quot; =&gt; &quot;hontou ni ?&quot; },
-            :no_escape =&gt; true)
+    req = put(
+      :dry_run =&gt; true,
+      :uri =&gt; &quot;http://localhost:7777/items/1&quot;,
+      :params =&gt; { &quot;a&quot; =&gt; &quot;hontou ni ?&quot; },
+      :no_escape =&gt; true)
 
-        assert_equal &quot;/items/1?a=hontou ni ?&quot;, req.path
-            # would fail anyway...
-    end
+    assert_equal &quot;/items/1?a=hontou ni ?&quot;, req.path
+      # would fail anyway...
+  end
 end</diff>
      <filename>test/escape_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,54 +7,52 @@
 # Mon Feb 18 13:00:36 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class UriTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
-    def test_0
+  def test_0
 
-        uri = &quot;http://localhost:7777/items&quot;
+    uri = &quot;http://localhost:7777/items&quot;
 
-        res = fopen uri
-        assert_equal 200, res.code.to_i
-        assert_equal &quot;{}&quot;, res.body.strip
+    res = fopen uri
+    assert_equal 200, res.code.to_i
+    assert_equal &quot;{}&quot;, res.body.strip
 
-        res = fopen &quot;file:CHANGELOG.txt&quot;
-        assert_kind_of String, res.read
+    res = fopen &quot;file:CHANGELOG.txt&quot;
+    assert_kind_of String, res.read
 
-        res = fopen &quot;CHANGELOG.txt&quot;
-        assert_kind_of String, res.read
+    res = fopen &quot;CHANGELOG.txt&quot;
+    assert_kind_of String, res.read
 
-        res = fopen &quot;http://localhost:7777/things&quot;
-        assert_equal 200, res.code.to_i
-        assert_equal &quot;{}&quot;, res.body.strip
-            #
-            # it follows redirections :)
+    res = fopen &quot;http://localhost:7777/things&quot;
+    assert_equal 200, res.code.to_i
+    assert_equal &quot;{}&quot;, res.body.strip
+      #
+      # it follows redirections :)
 
-        res = fopen &quot;http://localhost:7777/things&quot;, :noredir =&gt; true
-        assert_equal 303, res.code.to_i
+    res = fopen &quot;http://localhost:7777/things&quot;, :noredir =&gt; true
+    assert_equal 303, res.code.to_i
 
-        fopen &quot;CHANGELOG.txt&quot; do |f|
-            assert_kind_of String, f.read
-        end
+    fopen &quot;CHANGELOG.txt&quot; do |f|
+      assert_kind_of String, f.read
+    end
 
-        fopen &quot;http://localhost:7777/things&quot; do |res|
-            assert_equal 200, res.code.to_i
-            assert_equal &quot;{}&quot;, res.body.strip
-        end
+    fopen &quot;http://localhost:7777/things&quot; do |res|
+      assert_equal 200, res.code.to_i
+      assert_equal &quot;{}&quot;, res.body.strip
     end
+  end
 
-    def test_1
+  def test_1
 
-        assert_kind_of String, fopen(&quot;CHANGELOG.txt&quot;).read
-        assert_kind_of String, fopen(&quot;file:CHANGELOG.txt&quot;).read
-        assert_kind_of String, fopen(&quot;http://localhost:7777/items&quot;).read
-    end
+    assert_kind_of String, fopen(&quot;CHANGELOG.txt&quot;).read
+    assert_kind_of String, fopen(&quot;file:CHANGELOG.txt&quot;).read
+    assert_kind_of String, fopen(&quot;http://localhost:7777/items&quot;).read
+  end
 end</diff>
      <filename>test/fopen_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,38 +7,33 @@
 # Mon Jan 14 00:07:38 JST 2008
 #
 
-require 'rubygems'
-
-require 'test/unit'
-require 'testbase'
-
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class HttpsTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
-    def setup
-        # no need for an items server
-    end
+  def setup
+    # no need for an items server
+  end
 
-    def teardown
-    end
+  def teardown
+  end
 
-    def test_0
+  def test_0
 
-        res = expect(
-            200,
-            nil,
-            get(:uri =&gt; &quot;https://jmettraux.wordpress.com/2006/03/31/cvs-down/&quot;))
+    res = expect(
+      200,
+      nil,
+      get(:uri =&gt; &quot;https://jmettraux.wordpress.com/2006/03/31/cvs-down/&quot;))
 
-        #res.each_header do |h|
-        #    p h
-        #end
+    #res.each_header do |h|
+    #  p h
+    #end
 
-        #puts res.body
-        assert res.body.match &quot;^&lt;!DOCTYPE html PUBLIC&quot;
-    end
+    #puts res.body
+    assert res.body.match &quot;^&lt;!DOCTYPE html PUBLIC&quot;
+  end
 end</diff>
      <filename>test/https_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,62 +7,60 @@
 # Sun Jan 13 12:33:03 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class ItemConditionalTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_0
+  def test_0
 
-        require 'open-uri'
-        f = open &quot;http://localhost:7777/items&quot;
-        d = f.read
-        f.close
+    require 'open-uri'
+    f = open &quot;http://localhost:7777/items&quot;
+    d = f.read
+    f.close
 
-        assert_equal &quot;{}&quot;, d.strip
-    end
+    assert_equal &quot;{}&quot;, d.strip
+  end
 
-    def test_1
+  def test_1
 
-        res = get :uri =&gt; &quot;http://localhost:7777/items&quot;
+    res = get :uri =&gt; &quot;http://localhost:7777/items&quot;
 
-        assert_equal 200, res.code.to_i
-        assert_equal &quot;{}&quot;, res.body.strip
+    assert_equal 200, res.code.to_i
+    assert_equal &quot;{}&quot;, res.body.strip
 
-        p res['Etag']
-        #p res['Last-Modified']
-        assert res['Etag'].length &gt; 0
-        assert res['Last-Modified'].length &gt; 0
-    end
+    p res['Etag']
+    #p res['Last-Modified']
+    assert res['Etag'].length &gt; 0
+    assert res['Last-Modified'].length &gt; 0
+  end
 
-    def test_2
+  def test_2
 
-        res = get &quot;http://localhost:7777/items&quot;
-        assert_equal 200, res.code.to_i
+    res = get &quot;http://localhost:7777/items&quot;
+    assert_equal 200, res.code.to_i
 
-        lm = res['Last-Modified']
-        etag = res['Etag']
+    lm = res['Last-Modified']
+    etag = res['Etag']
 
-        res = get(
-            &quot;http://localhost:7777/items&quot;, 
-            :headers =&gt; { 'If-Modified-Since' =&gt; lm })
-        assert_equal 304, res.code.to_i
+    res = get(
+      &quot;http://localhost:7777/items&quot;,
+      :headers =&gt; { 'If-Modified-Since' =&gt; lm })
+    assert_equal 304, res.code.to_i
 
-        res = get(
-            &quot;http://localhost:7777/items&quot;, :h =&gt; { 'If-None-Match' =&gt; etag })
-        assert_equal 304, res.code.to_i
+    res = get(
+      &quot;http://localhost:7777/items&quot;, :h =&gt; { 'If-None-Match' =&gt; etag })
+    assert_equal 304, res.code.to_i
 
-        res = get(
-            &quot;http://localhost:7777/items&quot;, 
-            :h =&gt; { 'If-Modified-Since' =&gt; lm, 'If-None-Match' =&gt; etag })
-        assert_equal 304, res.code.to_i
-    end
+    res = get(
+      &quot;http://localhost:7777/items&quot;,
+      :h =&gt; { 'If-Modified-Since' =&gt; lm, 'If-None-Match' =&gt; etag })
+    assert_equal 304, res.code.to_i
+  end
 end
 </diff>
      <filename>test/iconditional_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -19,36 +19,36 @@ $dcount = 0 # tracking the number of hits when doing digest auth
 #
 class LastModifiedHash
 
-    def initialize
+  def initialize
 
-        @hash = {}
-        touch
-    end
+    @hash = {}
+    touch
+  end
 
-    def touch (key=nil)
+  def touch (key=nil)
 
-        now = Time.now.httpdate
-        @hash[key] = now if key
-        @hash['__self'] = now
-    end
+    now = Time.now.httpdate
+    @hash[key] = now if key
+    @hash['__self'] = now
+  end
 
-    def delete (key)
+  def delete (key)
 
-        @hash.delete key
-        @hash['__self'] = Time.now.httpdate
-    end
+    @hash.delete key
+    @hash['__self'] = Time.now.httpdate
+  end
 
-    def last_modified (key)
+  def last_modified (key)
 
-        key = key || '__self'
-        @hash[key]
-    end
+    key = key || '__self'
+    @hash[key]
+  end
 
-    def clear
+  def clear
 
-        @hash.clear
-        @hash['__self'] = Time.now.httpdate
-    end
+    @hash.clear
+    @hash['__self'] = Time.now.httpdate
+  end
 end
 
 
@@ -57,173 +57,173 @@ end
 #
 class ItemServlet &lt; WEBrick::HTTPServlet::AbstractServlet
 
-    @@items = {}
-    @@last_item_id = -1
+  @@items = {}
+  @@last_item_id = -1
 
-    @@lastmod = LastModifiedHash.new
+  @@lastmod = LastModifiedHash.new
 
-    @@authenticator = WEBrick::HTTPAuth::DigestAuth.new(
-        :UserDB =&gt; WEBrick::HTTPAuth::Htdigest.new('test/test.htdigest'),
-        :Realm =&gt; 'test_realm')
+  @@authenticator = WEBrick::HTTPAuth::DigestAuth.new(
+    :UserDB =&gt; WEBrick::HTTPAuth::Htdigest.new('test/test.htdigest'),
+    :Realm =&gt; 'test_realm')
 
-    def initialize (server, *options)
+  def initialize (server, *options)
 
-        super
-        @auth = server.auth
-    end
+    super
+    @auth = server.auth
+  end
 
-    #
-    # Overriding the service() method to perform a potential auth check
-    #
-    def service (req, res)
+  #
+  # Overriding the service() method to perform a potential auth check
+  #
+  def service (req, res)
 
-        if @auth == :basic
+    if @auth == :basic
 
-            WEBrick::HTTPAuth.basic_auth(req, res, &quot;items&quot;) do |u, p|
-                (u != nil and u == p)
-            end
+      WEBrick::HTTPAuth.basic_auth(req, res, &quot;items&quot;) do |u, p|
+        (u != nil and u == p)
+      end
 
-        elsif @auth == :digest
+    elsif @auth == :digest
 
-            $dcount += 1
-            @@authenticator.authenticate(req, res)
-        end
-
-        super
+      $dcount += 1
+      @@authenticator.authenticate(req, res)
     end
 
-    def do_GET (req, res)
+    super
+  end
+
+  def do_GET (req, res)
 
-        i = item_id req
+    i = item_id req
 
-        return reply(res, 404, &quot;no item '#{i}'&quot;) \
-            if i and not items[i]
+    return reply(res, 404, &quot;no item '#{i}'&quot;) \
+      if i and not items[i]
 
-        representation, et, lm = fetch_representation i
+    representation, et, lm = fetch_representation i
 
-        since = req['If-Modified-Since']
-        since = DateTime.parse(since) if since
-        match = req['If-None-Match']
+    since = req['If-Modified-Since']
+    since = DateTime.parse(since) if since
+    match = req['If-None-Match']
 
-        if ((not since and not match) or
-            (since and (since &gt; DateTime.parse(lm))) or
-            (match and (match != et)))
+    if ((not since and not match) or
+      (since and (since &gt; DateTime.parse(lm))) or
+      (match and (match != et)))
 
-            res['Etag'] = et
-            res['Last-Modified'] = lm
-            res.body = representation.inspect + &quot;\n&quot;
+      res['Etag'] = et
+      res['Last-Modified'] = lm
+      res.body = representation.inspect + &quot;\n&quot;
 
-        else
+    else
 
-            reply(res, 304, &quot;Not Modified&quot;)
-        end
+      reply(res, 304, &quot;Not Modified&quot;)
     end
+  end
 
-    def do_POST (req, res)
+  def do_POST (req, res)
 
-        query = WEBrick::HTTPUtils::parse_query(req.query_string)
-        m = query['_method']
-        m = m.downcase if m
-        return do_PUT(req, res) if m == 'put'
-        return do_DELETE(req, res) if m == 'delete'
+    query = WEBrick::HTTPUtils::parse_query(req.query_string)
+    m = query['_method']
+    m = m.downcase if m
+    return do_PUT(req, res) if m == 'put'
+    return do_DELETE(req, res) if m == 'delete'
 
-        i = item_id req
+    i = item_id req
 
-        i = (@@last_item_id += 1) unless i
+    i = (@@last_item_id += 1) unless i
 
-        items[i] = req.body
-        lastmod.touch i
+    items[i] = req.body
+    lastmod.touch i
 
-        res['Location'] = &quot;#{@host}/items/#{i}&quot;
-        reply res, 201, &quot;item created&quot;
-    end
+    res['Location'] = &quot;#{@host}/items/#{i}&quot;
+    reply res, 201, &quot;item created&quot;
+  end
 
-    def do_PUT (req, res)
+  def do_PUT (req, res)
 
-        i = item_id req
+    i = item_id req
 
-        return reply(res, 404, &quot;no item '#{i}'&quot;) unless items[i]
+    return reply(res, 404, &quot;no item '#{i}'&quot;) unless items[i]
 
-        items[i] = req.body
-        lastmod.touch i
+    items[i] = req.body
+    lastmod.touch i
 
-        reply res, 200, &quot;item updated&quot;
-    end
+    reply res, 200, &quot;item updated&quot;
+  end
 
-    def do_DELETE (req, res)
+  def do_DELETE (req, res)
 
-        i = item_id req
+    i = item_id req
 
-        return reply(res, 404, &quot;no item '#{i}'&quot;) unless items[i]
+    return reply(res, 404, &quot;no item '#{i}'&quot;) unless items[i]
 
-        items.delete i
-        lastmod.delete i
+    items.delete i
+    lastmod.delete i
 
-        reply res, 200, &quot;item deleted&quot;
-    end
+    reply res, 200, &quot;item deleted&quot;
+  end
 
-    #
-    # clears the items
-    #
-    def self.flush
+  #
+  # clears the items
+  #
+  def self.flush
 
-        @@items.clear
-        @@lastmod.clear
-    end
+    @@items.clear
+    @@lastmod.clear
+  end
 
-    protected
+  protected
 
-        def items
-            @@items
-        end
+  def items
+    @@items
+  end
 
-        def lastmod
-            @@lastmod
-        end
+  def lastmod
+    @@lastmod
+  end
 
-        def is_modified (req, key)
+  def is_modified (req, key)
 
-            since = req['If-Modified-Since']
-            match = req['If-None-Match']
+    since = req['If-Modified-Since']
+    match = req['If-None-Match']
 
-            return true unless since or match
+    return true unless since or match
 
-            #puts
-            #p [ since, match ]
-            #puts
+    #puts
+    #p [ since, match ]
+    #puts
 
-            (since or match)
-        end
+    (since or match)
+  end
 
-        #
-        # Returns representation, etag, last_modified
-        #
-        def fetch_representation (key=nil)
+  #
+  # Returns representation, etag, last_modified
+  #
+  def fetch_representation (key=nil)
 
-            representation = if key
-                items[key]
-            else
-                items
-            end
+    representation = if key
+      items[key]
+    else
+      items
+    end
 
-            [ representation,
-              representation.inspect.hash.to_s,
-              lastmod.last_modified(key) ]
-        end
+    [ representation,
+      representation.inspect.hash.to_s,
+      lastmod.last_modified(key) ]
+  end
 
-        def reply (res, code, message)
+  def reply (res, code, message)
 
-            res.status = code
-            res.body = message + &quot;\n&quot;
-            res['Content-type'] = &quot;text/plain&quot;
-        end
+    res.status = code
+    res.body = message + &quot;\n&quot;
+    res['Content-type'] = &quot;text/plain&quot;
+  end
 
-        def item_id (req)
+  def item_id (req)
 
-            p = req.path_info[1..-1]
-            return nil if not p or p == ''
-            p.to_i
-        end
+    p = req.path_info[1..-1]
+    return nil if not p or p == ''
+    p.to_i
+  end
 end
 
 #
@@ -231,12 +231,12 @@ end
 #
 class ThingServlet &lt; WEBrick::HTTPServlet::AbstractServlet
 
-    def do_GET (req, res)
+  def do_GET (req, res)
 
-        res.set_redirect(
-            WEBrick::HTTPStatus[303],
-            &quot;http://localhost:7777/items&quot;)
-    end
+    res.set_redirect(
+      WEBrick::HTTPStatus[303],
+      &quot;http://localhost:7777/items&quot;)
+  end
 end
 
 #
@@ -244,35 +244,35 @@ end
 #
 class CookieServlet &lt; WEBrick::HTTPServlet::AbstractServlet
 
-    @@sessions = {}
+  @@sessions = {}
 
-    def do_GET (req, res)
+  def do_GET (req, res)
 
-        res.body = get_session(req, res).inspect
-    end
+    res.body = get_session(req, res).inspect
+  end
 
-    def do_POST (req, res)
+  def do_POST (req, res)
 
-        get_session(req, res) &lt;&lt; req.body.strip
-        res.body = &quot;ok.&quot;
-    end
+    get_session(req, res) &lt;&lt; req.body.strip
+    res.body = &quot;ok.&quot;
+  end
 
-    protected
+  protected
 
-        def get_session (req, res)
+  def get_session (req, res)
 
-            c = req.cookies.find { |c| c.name == 'tcookie' }
+    c = req.cookies.find { |c| c.name == 'tcookie' }
 
-            if c
-                @@sessions[c.value]
-            else
-                s = []
-                key = (Time.now.to_f * 100000).to_i.to_s
-                @@sessions[key] = s
-                res.cookies &lt;&lt; WEBrick::Cookie.new('tcookie', key)
-                s
-            end
-        end
+    if c
+      @@sessions[c.value]
+    else
+      s = []
+      key = (Time.now.to_f * 100000).to_i.to_s
+      @@sessions[key] = s
+      res.cookies &lt;&lt; WEBrick::Cookie.new('tcookie', key)
+      s
+    end
+  end
 end
 
 #
@@ -280,10 +280,10 @@ end
 #
 class LostServlet &lt; WEBrick::HTTPServlet::AbstractServlet
 
-    def do_GET (req, res)
+  def do_GET (req, res)
 
-        sleep 200
-    end
+    sleep 200
+  end
 end
 
 #
@@ -292,42 +292,42 @@ end
 #
 class ItemServer
 
-    def initialize (args={})
+  def initialize (args={})
 
-        port = args[:port] || 7777
+    port = args[:port] || 7777
 
-        #al = [
-        #    [ &quot;&quot;, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
-        #    [ &quot;&quot;, WEBrick::AccessLog::REFERER_LOG_FORMAT ]]
+    #al = [
+    #  [ &quot;&quot;, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
+    #  [ &quot;&quot;, WEBrick::AccessLog::REFERER_LOG_FORMAT ]]
 
-        @server = WEBrick::HTTPServer.new :Port =&gt; port, :AccessLog =&gt; nil
+    @server = WEBrick::HTTPServer.new :Port =&gt; port, :AccessLog =&gt; nil
 
-        class &lt;&lt; @server
-            attr_accessor :auth
-        end
+    class &lt;&lt; @server
+      attr_accessor :auth
+    end
 
-        @server.auth = args[:auth]
+    @server.auth = args[:auth]
 
-        @server.mount &quot;/items&quot;, ItemServlet
-        @server.mount &quot;/things&quot;, ThingServlet
-        @server.mount &quot;/cookie&quot;, CookieServlet
-        @server.mount &quot;/lost&quot;, LostServlet
+    @server.mount &quot;/items&quot;, ItemServlet
+    @server.mount &quot;/things&quot;, ThingServlet
+    @server.mount &quot;/cookie&quot;, CookieServlet
+    @server.mount &quot;/lost&quot;, LostServlet
 
-        [ 'INT', 'TERM' ].each do |signal|
-            trap(signal) { shutdown }
-        end
+    [ 'INT', 'TERM' ].each do |signal|
+      trap(signal) { shutdown }
     end
+  end
 
-    def start
+  def start
 
-        Thread.new { @server.start }
-            # else the server and the test lock each other
-    end
+    Thread.new { @server.start }
+      # else the server and the test lock each other
+  end
 
-    def shutdown
+  def shutdown
 
-        ItemServlet.flush
-        @server.shutdown
-    end
+    ItemServlet.flush
+    @server.shutdown
+  end
 end
 </diff>
      <filename>test/items.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,85 +7,83 @@
 # Thu Jan 17 10:15:52 JST 2008
 #
 
-require 'timeout'
-require 'test/unit'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class ProxyTest &lt; Test::Unit::TestCase
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_0
+  def test_0
 
-        uri = &quot;http://rufus.rubyforge.org/rufus-verbs/index.html&quot;
+    uri = &quot;http://rufus.rubyforge.org/rufus-verbs/index.html&quot;
 
-        res0 = get(uri, :proxy =&gt; false)
+    res0 = get(uri, :proxy =&gt; false)
 
-        assert_not_nil res0.body # just displaying the test dot
+    assert_not_nil res0.body # just displaying the test dot
 
-        proxies = find_proxies
+    proxies = find_proxies
 
-        res1 = nil
+    res1 = nil
 
-        proxies.each do |proxy|
-            begin
-                Timeout::timeout 2 do
-                    res1 = get(uri, :proxy =&gt; proxy)
-                end
-                break if res1.code.to_i == 200
-            rescue Exception =&gt; e
-                puts &quot;skipped proxy '#{proxy}'&quot;
-            end
+    proxies.each do |proxy|
+      begin
+        Timeout::timeout 2 do
+          res1 = get(uri, :proxy =&gt; proxy)
         end
+        break if res1.code.to_i == 200
+      rescue Exception =&gt; e
+        puts &quot;skipped proxy '#{proxy}'&quot;
+      end
+    end
 
-        if res1.code.to_i != 200
-            puts
-            puts
-            puts &quot;sorry, couldn't find an open proxy, couldn't test the&quot;
-            puts &quot;proxy feature of 'rufus-verbs'&quot;
-            puts
-            puts
-            return
-        end
+    if res1.code.to_i != 200
+      puts
+      puts
+      puts &quot;sorry, couldn't find an open proxy, couldn't test the&quot;
+      puts &quot;proxy feature of 'rufus-verbs'&quot;
+      puts
+      puts
+      return
+    end
 
-        assert_equal res0.body.length, res1.body.length
+    assert_equal res0.body.length, res1.body.length
 
-        #p res0.to_hash
-        #p res1.to_hash
+    #p res0.to_hash
+    #p res1.to_hash
 
-        via1 = res1[&quot;via&quot;]
+    via1 = res1[&quot;via&quot;]
 
-        unless via1
-            puts
-            puts
-            puts &quot;seems like no open proxy could be found... no via...&quot;
-            puts &quot;can't test for now&quot;
-            puts
-            puts
-            return
-        end
+    unless via1
+      puts
+      puts
+      puts &quot;seems like no open proxy could be found... no via...&quot;
+      puts &quot;can't test for now&quot;
+      puts
+      puts
+      return
+    end
 
-        via1 = res1[&quot;via&quot;].split(&quot;, &quot;)[-1]
-            # last proxy
+    via1 = res1[&quot;via&quot;].split(&quot;, &quot;)[-1]
+      # last proxy
 
-        assert_no_match /wikimedia\.org/, via1
-            # making sure that the proxy was not one of wikipedia
-    end
+    assert_no_match /wikimedia\.org/, via1
+      # making sure that the proxy was not one of wikipedia
+  end
 
-    protected
+  protected
 
-        def find_proxies
+    def find_proxies
 
-            res = get &quot;http://freeproxy.ch/proxy.txt&quot;
-            lines = res.body.split &quot;\n&quot;
-            lines[4..-1].collect do |line|
-                l = line.split(&quot;\t&quot;)
-                'http://' + l[0]
-            end
-        end
+      res = get &quot;http://freeproxy.ch/proxy.txt&quot;
+      lines = res.body.split &quot;\n&quot;
+      lines[4..-1].collect do |line|
+        l = line.split(&quot;\t&quot;)
+        'http://' + l[0]
+      end
+    end
 
 end
 </diff>
      <filename>test/proxy_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,34 +7,32 @@
 # Sun Jan 13 20:02:25 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class RedirTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
 
-    def test_0
+  def test_0
 
-        expect 200, {}, get(:uri =&gt; &quot;http://localhost:7777/things&quot;)
-    end
+    expect 200, {}, get(:uri =&gt; &quot;http://localhost:7777/things&quot;)
+  end
 
-    #
-    # testing the :no_redirections directive
-    #
-    def test_1
+  #
+  # testing the :no_redirections directive
+  #
+  def test_1
 
-        res = get &quot;http://localhost:7777/things&quot;, :no_redirections =&gt; true
-        assert_equal 303, res.code.to_i
+    res = get &quot;http://localhost:7777/things&quot;, :no_redirections =&gt; true
+    assert_equal 303, res.code.to_i
 
-        res = get(&quot;http://localhost:7777/things&quot;, :noredir =&gt; true)
-        assert_equal 303, res.code.to_i
+    res = get(&quot;http://localhost:7777/things&quot;, :noredir =&gt; true)
+    assert_equal 303, res.code.to_i
 
-        expect 200, {}, get(&quot;http://localhost:7777/items&quot;, :noredir =&gt; true)
-    end
+    expect 200, {}, get(&quot;http://localhost:7777/items&quot;, :noredir =&gt; true)
+  end
 end</diff>
      <filename>test/redir_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,121 +7,116 @@
 # Sun Jan 13 12:33:03 JST 2008
 #
 
-require 'rubygems'
-
-require 'test/unit'
-require 'testbase'
-
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class SimpleTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
-
-    include Rufus::Verbs
+  include TestBaseMixin
 
+  include Rufus::Verbs
 
-    def test_0
 
-        #res = get :uri =&gt; &quot;http://localhost:7777/items&quot;
-        #assert_equal 200, res.code.to_i
-        #assert_equal &quot;{}&quot;, res.body.strip
-        expect 200, {}, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
+  def test_0
 
-        res = post :uri =&gt; &quot;http://localhost:7777/items/0&quot;, :d =&gt; &quot;Toto&quot;
-        assert_equal 201, res.code.to_i
-        assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
+    #res = get :uri =&gt; &quot;http://localhost:7777/items&quot;
+    #assert_equal 200, res.code.to_i
+    #assert_equal &quot;{}&quot;, res.body.strip
+    expect 200, {}, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
 
-        expect 200, { 0 =&gt; &quot;Toto&quot; }, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
+    res = post :uri =&gt; &quot;http://localhost:7777/items/0&quot;, :d =&gt; &quot;Toto&quot;
+    assert_equal 201, res.code.to_i
+    assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
 
-        res = get :host =&gt; &quot;localhost&quot;, :port =&gt; 7777, :path =&gt; &quot;/items&quot;
-        assert_equal 200, res.code.to_i
-        assert_equal ({ 0 =&gt; &quot;Toto&quot; }), eval(res.body)
+    expect 200, { 0 =&gt; &quot;Toto&quot; }, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
 
-        res = put :uri =&gt; &quot;http://localhost:7777/items/0&quot;, :d =&gt; &quot;Toto2&quot;
-        assert_equal 200, res.code.to_i
+    res = get :host =&gt; &quot;localhost&quot;, :port =&gt; 7777, :path =&gt; &quot;/items&quot;
+    assert_equal 200, res.code.to_i
+    assert_equal ({ 0 =&gt; &quot;Toto&quot; }), eval(res.body)
 
-        expect 200, { 0 =&gt; &quot;Toto2&quot; }, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
+    res = put :uri =&gt; &quot;http://localhost:7777/items/0&quot;, :d =&gt; &quot;Toto2&quot;
+    assert_equal 200, res.code.to_i
 
-        res = put :uri =&gt; &quot;http://localhost:7777/items/0&quot;, :d =&gt; &quot;Toto3&quot;, :fake_put =&gt; true
-        assert_equal 200, res.code.to_i
+    expect 200, { 0 =&gt; &quot;Toto2&quot; }, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
 
-        expect 200, { 0 =&gt; &quot;Toto3&quot; }, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
-    end
+    res = put :uri =&gt; &quot;http://localhost:7777/items/0&quot;, :d =&gt; &quot;Toto3&quot;, :fake_put =&gt; true
+    assert_equal 200, res.code.to_i
 
-    def test_0b
+    expect 200, { 0 =&gt; &quot;Toto3&quot; }, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
+  end
 
-        expect 200, {}, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
+  def test_0b
 
-        res = post :uri =&gt; &quot;http://localhost:7777/items&quot;, :d =&gt; &quot;Toto&quot;
-        assert_equal 201, res.code.to_i
-        assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
+    expect 200, {}, get(:uri =&gt; &quot;http://localhost:7777/items&quot;)
 
-        expect 200, &quot;\&quot;Toto\&quot;&quot;, get(:uri =&gt; &quot;http://localhost:7777/items/0&quot;)
+    res = post :uri =&gt; &quot;http://localhost:7777/items&quot;, :d =&gt; &quot;Toto&quot;
+    assert_equal 201, res.code.to_i
+    assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
 
-        res = post :uri =&gt; &quot;http://localhost:7777/items&quot;, :d =&gt; &quot;Smurf&quot;
-        assert_equal 201, res.code.to_i
-        assert_equal &quot;http://localhost:7777/items/1&quot;, res['Location']
+    expect 200, &quot;\&quot;Toto\&quot;&quot;, get(:uri =&gt; &quot;http://localhost:7777/items/0&quot;)
 
-        expect 200, &quot;\&quot;Smurf\&quot;&quot;, get(:uri =&gt; &quot;http://localhost:7777/items/1&quot;)
-    end
+    res = post :uri =&gt; &quot;http://localhost:7777/items&quot;, :d =&gt; &quot;Smurf&quot;
+    assert_equal 201, res.code.to_i
+    assert_equal &quot;http://localhost:7777/items/1&quot;, res['Location']
 
-    def test_1
+    expect 200, &quot;\&quot;Smurf\&quot;&quot;, get(:uri =&gt; &quot;http://localhost:7777/items/1&quot;)
+  end
 
-        ep = EndPoint.new(:host =&gt; &quot;localhost&quot;, :port =&gt; 7777)
-        expect 200, {}, ep.get(:resource =&gt; &quot;items&quot;)
+  def test_1
 
-        res = ep.put :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
-            &quot;blockdata&quot;
-        end
-        assert_equal 404, res.code.to_i
+    ep = EndPoint.new(:host =&gt; &quot;localhost&quot;, :port =&gt; 7777)
+    expect 200, {}, ep.get(:resource =&gt; &quot;items&quot;)
 
-        res = ep.post :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
-            &quot;blockdata&quot;
-        end
-        assert_equal 201, res.code.to_i
-        assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
+    res = ep.put :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
+      &quot;blockdata&quot;
+    end
+    assert_equal 404, res.code.to_i
 
-        expect 200, { 0 =&gt; &quot;blockdata&quot; }, ep.get(:res =&gt; &quot;items&quot;)
+    res = ep.post :resource =&gt; &quot;items&quot;, :id =&gt; 0 do
+      &quot;blockdata&quot;
     end
+    assert_equal 201, res.code.to_i
+    assert_equal &quot;http://localhost:7777/items/0&quot;, res['Location']
 
-    def test_2
+    expect 200, { 0 =&gt; &quot;blockdata&quot; }, ep.get(:res =&gt; &quot;items&quot;)
+  end
 
-        s = get(:uri =&gt; &quot;http://localhost:7777/items&quot;, :body =&gt; true)
-        assert_equal &quot;{}&quot;, s.strip
-    end
+  def test_2
 
-    #
-    # The &quot;no-path&quot; test
-    #
-    def test_3
+    s = get(:uri =&gt; &quot;http://localhost:7777/items&quot;, :body =&gt; true)
+    assert_equal &quot;{}&quot;, s.strip
+  end
 
-        r = get &quot;http://rufus.rubyforge.org&quot;
-        assert_kind_of Net::HTTPOK, r
-    end
+  #
+  # The &quot;no-path&quot; test
+  #
+  def test_3
 
-    #
-    # HEAD
-    #
-    def test_4
+    r = get &quot;http://rufus.rubyforge.org&quot;
+    assert_kind_of Net::HTTPOK, r
+  end
 
-        res = head &quot;http://localhost:7777/items&quot;
-        assert_equal 200, res.code.to_i
-        assert_nil res.body
-    end
+  #
+  # HEAD
+  #
+  def test_4
 
-    #
-    # OPTIONS
-    #
-    def test_5
+    res = head &quot;http://localhost:7777/items&quot;
+    assert_equal 200, res.code.to_i
+    assert_nil res.body
+  end
 
-        r = options &quot;http://localhost:7777/items&quot;
-        assert_equal [ :delete, :get, :head, :options, :post, :put], r
-    end
+  #
+  # OPTIONS
+  #
+  def test_5
 
-    def test_6
+    r = options &quot;http://localhost:7777/items&quot;
+    assert_equal [ :delete, :get, :head, :options, :post, :put], r
+  end
 
-        r = Rufus::Verbs::options &quot;http://localhost:7777/items&quot;
-        assert_equal [ :delete, :get, :head, :options, :post, :put], r
-    end
+  def test_6
+
+    r = Rufus::Verbs::options &quot;http://localhost:7777/items&quot;
+    assert_equal [ :delete, :get, :head, :options, :post, :put], r
+  end
 end</diff>
      <filename>test/simple_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,28 +1,24 @@
 
-require 'rubygems'
-
-
-require 'dryrun_test'
-require 'iconditional_test'
-
-require 'simple_test'
-
-require 'auth0_test'
-require 'auth1_test'
-
-require 'redir_test'
-require 'block_test'
-require 'https_test'
-require 'proxy_test'
-
-require 'conditional_test'
-require 'cookie0_test'
-require 'cookie1_test'
-
-require 'escape_test'
-
-require 'uri_test'
-require 'fopen_test'
-
-require 'timeout_test'
+#require 'dryrun_test'
+#require 'iconditional_test'
+#require 'simple_test'
+#require 'auth0_test'
+#require 'auth1_test'
+#require 'redir_test'
+#require 'block_test'
+#require 'https_test'
+#require 'proxy_test'
+#require 'conditional_test'
+#require 'cookie0_test'
+#require 'cookie1_test'
+#require 'escape_test'
+#require 'uri_test'
+#require 'fopen_test'
+#require 'timeout_test'
+
+dirpath = File.dirname(__FILE__)
+
+tests = Dir.new(dirpath).entries.select { |e| e.match(/\_test\.rb$/) }.sort
+
+tests.each { |t| load &quot;#{dirpath}/#{t}&quot; }
 </diff>
      <filename>test/test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,32 +7,28 @@
 # Mon May 26 17:04:25 JST 2008
 #
 
-require 'rubygems'
-
-require 'test/unit'
-require 'testbase'
-
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class TimeoutTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
-
-    include Rufus::Verbs
+  include TestBaseMixin
 
+  include Rufus::Verbs
 
-    def test_0
 
-        error = nil
-        t = Time.now
+  def test_0
 
-        begin
-            get :uri =&gt; &quot;http://localhost:7777/lost&quot;, :to =&gt; 1
-        rescue Timeout::Error =&gt; e
-            error = e
-        end
+    error = nil
+    t = Time.now
 
-        assert_not_nil error
-        assert (Time.now - t &lt; 2)
+    begin
+      get :uri =&gt; &quot;http://localhost:7777/lost&quot;, :to =&gt; 1
+    rescue Timeout::Error =&gt; e
+      error = e
     end
+
+    assert_not_nil error
+    assert (Time.now - t &lt; 2)
+  end
 end
+</diff>
      <filename>test/timeout_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,27 +7,25 @@
 # Mon Feb 18 11:05:07 JST 2008
 #
 
-require 'test/unit'
-require 'testbase'
 
-require 'rufus/verbs'
+require File.dirname(__FILE__) + '/base.rb'
 
 
 class UriTest &lt; Test::Unit::TestCase
-    include TestBaseMixin
+  include TestBaseMixin
 
-    include Rufus::Verbs
+  include Rufus::Verbs
 
-    def test_0
+  def test_0
 
-        uri = URI.parse &quot;http://localhost:7777/items&quot;
+    uri = URI.parse &quot;http://localhost:7777/items&quot;
 
-        res = get :uri =&gt; uri
-        assert_equal 200, res.code.to_i
-        assert_equal &quot;{}&quot;, res.body.strip
+    res = get :uri =&gt; uri
+    assert_equal 200, res.code.to_i
+    assert_equal &quot;{}&quot;, res.body.strip
 
-        res = get uri
-        assert_equal 200, res.code.to_i
-        assert_equal &quot;{}&quot;, res.body.strip
-    end
+    res = get uri
+    assert_equal 200, res.code.to_i
+    assert_equal &quot;{}&quot;, res.body.strip
+  end
 end</diff>
      <filename>test/uri_test.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>test/testbase.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>2227f78519a2e862403baaa17c1592bdccfd0912</id>
    </parent>
  </parents>
  <author>
    <name>John Mettraux</name>
    <email>jmettraux@gmail.com</email>
  </author>
  <url>http://github.com/jmettraux/rufus-verbs/commit/3159e3a12c41e0aafbba7d4f1a3f7e1f604186cc</url>
  <id>3159e3a12c41e0aafbba7d4f1a3f7e1f604186cc</id>
  <committed-date>2009-03-23T17:33:50-07:00</committed-date>
  <authored-date>2009-03-23T17:33:50-07:00</authored-date>
  <message>spring 2009 cleanup</message>
  <tree>8788b7a11698f6cc8f137d10e5dc13081fa66345</tree>
  <committer>
    <name>John Mettraux</name>
    <email>jmettraux@gmail.com</email>
  </committer>
</commit>
