mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Use rack's status code list as a base
This commit is contained in:
parent
c1b4a5eb56
commit
ef08aa45b1
1 changed files with 19 additions and 67 deletions
|
@ -1,88 +1,40 @@
|
||||||
module ActionDispatch
|
module ActionDispatch
|
||||||
module StatusCodes #:nodoc:
|
module StatusCodes #:nodoc:
|
||||||
# Defines the standard HTTP status codes, by integer, with their
|
STATUS_CODES = Rack::Utils::HTTP_STATUS_CODES.merge({
|
||||||
# corresponding default message texts.
|
|
||||||
# Source: http://www.iana.org/assignments/http-status-codes
|
|
||||||
STATUS_CODES = {
|
|
||||||
100 => "Continue",
|
|
||||||
101 => "Switching Protocols",
|
|
||||||
102 => "Processing",
|
102 => "Processing",
|
||||||
|
|
||||||
200 => "OK",
|
|
||||||
201 => "Created",
|
|
||||||
202 => "Accepted",
|
|
||||||
203 => "Non-Authoritative Information",
|
|
||||||
204 => "No Content",
|
|
||||||
205 => "Reset Content",
|
|
||||||
206 => "Partial Content",
|
|
||||||
207 => "Multi-Status",
|
207 => "Multi-Status",
|
||||||
226 => "IM Used",
|
226 => "IM Used",
|
||||||
|
|
||||||
300 => "Multiple Choices",
|
|
||||||
301 => "Moved Permanently",
|
|
||||||
302 => "Found",
|
|
||||||
303 => "See Other",
|
|
||||||
304 => "Not Modified",
|
|
||||||
305 => "Use Proxy",
|
|
||||||
307 => "Temporary Redirect",
|
|
||||||
|
|
||||||
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 Timeout",
|
|
||||||
409 => "Conflict",
|
|
||||||
410 => "Gone",
|
|
||||||
411 => "Length Required",
|
|
||||||
412 => "Precondition Failed",
|
|
||||||
413 => "Request Entity Too Large",
|
|
||||||
414 => "Request-URI Too Long",
|
|
||||||
415 => "Unsupported Media Type",
|
|
||||||
416 => "Requested Range Not Satisfiable",
|
|
||||||
417 => "Expectation Failed",
|
|
||||||
422 => "Unprocessable Entity",
|
422 => "Unprocessable Entity",
|
||||||
423 => "Locked",
|
423 => "Locked",
|
||||||
424 => "Failed Dependency",
|
424 => "Failed Dependency",
|
||||||
426 => "Upgrade Required",
|
426 => "Upgrade Required",
|
||||||
|
|
||||||
500 => "Internal Server Error",
|
|
||||||
501 => "Not Implemented",
|
|
||||||
502 => "Bad Gateway",
|
|
||||||
503 => "Service Unavailable",
|
|
||||||
504 => "Gateway Timeout",
|
|
||||||
505 => "HTTP Version Not Supported",
|
|
||||||
507 => "Insufficient Storage",
|
507 => "Insufficient Storage",
|
||||||
510 => "Not Extended"
|
510 => "Not Extended"
|
||||||
}
|
}).freeze
|
||||||
|
|
||||||
# Provides a symbol-to-fixnum lookup for converting a symbol (like
|
# Provides a symbol-to-fixnum lookup for converting a symbol (like
|
||||||
# :created or :not_implemented) into its corresponding HTTP status
|
# :created or :not_implemented) into its corresponding HTTP status
|
||||||
# code (like 200 or 501).
|
# code (like 200 or 501).
|
||||||
SYMBOL_TO_STATUS_CODE = STATUS_CODES.inject({}) do |hash, (code, message)|
|
SYMBOL_TO_STATUS_CODE = STATUS_CODES.inject({}) { |hash, (code, message)|
|
||||||
hash[message.gsub(/ /, "").underscore.to_sym] = code
|
hash[message.gsub(/ /, "").underscore.to_sym] = code
|
||||||
hash
|
hash
|
||||||
end
|
}.freeze
|
||||||
|
|
||||||
# Given a status parameter, determine whether it needs to be converted
|
private
|
||||||
# to a string. If it is a fixnum, use the STATUS_CODES hash to lookup
|
# Given a status parameter, determine whether it needs to be converted
|
||||||
# the default message. If it is a symbol, use the SYMBOL_TO_STATUS_CODE
|
# to a string. If it is a fixnum, use the STATUS_CODES hash to lookup
|
||||||
# hash to convert it.
|
# the default message. If it is a symbol, use the SYMBOL_TO_STATUS_CODE
|
||||||
def interpret_status(status)
|
# hash to convert it.
|
||||||
case status
|
def interpret_status(status)
|
||||||
when Fixnum then
|
case status
|
||||||
"#{status} #{STATUS_CODES[status]}".strip
|
when Fixnum then
|
||||||
when Symbol then
|
"#{status} #{STATUS_CODES[status]}".strip
|
||||||
interpret_status(SYMBOL_TO_STATUS_CODE[status] ||
|
when Symbol then
|
||||||
"500 Unknown Status #{status.inspect}")
|
interpret_status(SYMBOL_TO_STATUS_CODE[status] ||
|
||||||
else
|
"500 Unknown Status #{status.inspect}")
|
||||||
status.to_s
|
else
|
||||||
|
status.to_s
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
private :interpret_status
|
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
Loading…
Reference in a new issue