summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-05-12 20:48:46 +0000
committerEric Wong <normalperson@yhbt.net>2009-05-13 17:42:08 +0000
commit36d02e26fc627fe431bfedc740b80dde75665987 (patch)
treee2e43fbaab8dc23785b81d0aed0f79faac6685ce
parentf3235420ebd2def1cdcb7c5bbe036f157835420d (diff)
Preventing needless duplication since Rack already has these
codes for us.  Also, put the status codes in HttpResponse since
nothing else needs (or should need) them.
-rw-r--r--Rakefile1
-rw-r--r--lib/unicorn/const.rb48
-rw-r--r--lib/unicorn/http_response.rb8
3 files changed, 10 insertions, 47 deletions
diff --git a/Rakefile b/Rakefile
index bbffdb0..e65271c 100644
--- a/Rakefile
+++ b/Rakefile
@@ -16,6 +16,7 @@ Echoe.new("unicorn") do |p|
   p.ignore_pattern = /^(pkg|site|projects|doc|log)|CVS|\.log/
   p.need_tar_gz = false
   p.need_tgz = true
+  p.dependencies = [ 'rack' ]
 
   p.extension_pattern = ["ext/**/extconf.rb"]
 
diff --git a/lib/unicorn/const.rb b/lib/unicorn/const.rb
index 3bd4808..263ea10 100644
--- a/lib/unicorn/const.rb
+++ b/lib/unicorn/const.rb
@@ -1,51 +1,7 @@
 
-module Unicorn
+require 'rack/utils'
 
-  # Every standard HTTP code mapped to the appropriate message.  These are
-  # used so frequently that they are placed directly in Unicorn for easy
-  # access rather than Unicorn::Const itself.
-  HTTP_STATUS_CODES = {
-    100  => 'Continue',
-    101  => 'Switching Protocols',
-    200  => 'OK',
-    201  => 'Created',
-    202  => 'Accepted',
-    203  => 'Non-Authoritative Information',
-    204  => 'No Content',
-    205  => 'Reset Content',
-    206  => 'Partial Content',
-    300  => 'Multiple Choices',
-    301  => 'Moved Permanently',
-    302  => 'Moved Temporarily',
-    303  => 'See Other',
-    304  => 'Not Modified',
-    305  => 'Use Proxy',
-    400  => 'Bad Request',
-    401  => 'Unauthorized',
-    402  => 'Payment Required',
-    403  => 'Forbidden',
-    404  => 'Not Found',
-    405  => 'Method Not Allowed',
-    406  => 'Not Acceptable',
-    407  => 'Proxy Authentication Required',
-    408  => 'Request Time-out',
-    409  => 'Conflict',
-    410  => 'Gone',
-    411  => 'Length Required',
-    412  => 'Precondition Failed',
-    413  => 'Request Entity Too Large',
-    414  => 'Request-URI Too Large',
-    415  => 'Unsupported Media Type',
-    500  => 'Internal Server Error',
-    501  => 'Not Implemented',
-    502  => 'Bad Gateway',
-    503  => 'Service Unavailable',
-    504  => 'Gateway Time-out',
-    505  => 'HTTP Version not supported'
-  }.inject({}) { |hash,(code,msg)|
-      hash[code] = "#{code} #{msg}"
-      hash
-  }
+module Unicorn
 
   # Frequently used constants when constructing requests or responses.  Many times
   # the constant just refers to a string with the same contents.  Using these constants
diff --git a/lib/unicorn/http_response.rb b/lib/unicorn/http_response.rb
index a9b5f2b..ce04a0d 100644
--- a/lib/unicorn/http_response.rb
+++ b/lib/unicorn/http_response.rb
@@ -21,6 +21,12 @@ module Unicorn
 
   class HttpResponse
 
+    # Every standard HTTP code mapped to the appropriate message.
+    CODES = Rack::Utils::HTTP_STATUS_CODES.inject({}) { |hash,(code,msg)|
+      hash[code] = "#{code} #{msg}"
+      hash
+    }
+
     # Rack does not set/require a Date: header.  We always override the
     # Connection: and Date: headers no matter what (if anything) our
     # Rack application sent us.
@@ -31,7 +37,7 @@ module Unicorn
     # writes the rack_response to socket as an HTTP response
     def self.write(socket, rack_response)
       status, headers, body = rack_response
-      status = HTTP_STATUS_CODES[status]
+      status = CODES[status]
       OUT.clear
 
       # Don't bother enforcing duplicate supression, it's a Hash most of