From 36d02e26fc627fe431bfedc740b80dde75665987 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 12 May 2009 20:48:46 +0000 Subject: Require Rack for HTTP Status codes 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. --- Rakefile | 1 + lib/unicorn/const.rb | 48 ++------------------------------------------ lib/unicorn/http_response.rb | 8 +++++++- 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 -- cgit v1.2.3-24-ge0c7