Feature #6480

[PATCH] Add HTTP status codes from RFC 6585

Added by Sangil Jung almost 3 years ago. Updated almost 3 years ago.

[ruby-core:45175]
Status:Closed
Priority:Normal
Assignee:Eric Hodel

Description

Hi, Matz and rubyists.
I attach a patch that contains additional HTTP status codes from RFC 6585 -
http://tools.ietf.org/html/rfc6585.

  • lib/net/http.rb : add HTTP status codes from RFC 6585.
  • lib/webrick/httpstatus.rb : add HTTP status codes from RFC 6585.

It's simple, isn't it?
Thanks.
--


Sangil Jung.

+82.10.6402-4639
http://humbroll.com

Index: lib/webrick/httpstatus.rb
===================================================================
--- lib/webrick/httpstatus.rb (revision 35666)
+++ lib/webrick/httpstatus.rb (working copy)
@@ -88,12 +88,16 @@
415 => 'Unsupported Media Type',
416 => 'Request Range Not Satisfiable',
417 => 'Expectation Failed',
+ 428 => 'Precondition Required',
+ 429 => 'Too Many Requests',
+ 431 => 'Request Header Fields Too Large',
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
- 505 => 'HTTP Version Not Supported'
+ 505 => 'HTTP Version Not Supported',
+ 511 => 'Network Authentication Required'
}

  # Maps a status code to the corresponding Status class

Index: lib/net/http.rb
===================================================================
--- lib/net/http.rb (revision 35666)
+++ lib/net/http.rb (working copy)
@@ -347,6 +347,9 @@
# HTTPUnsupportedMediaType:: 415
# HTTPRequestedRangeNotSatisfiable:: 416
# HTTPExpectationFailed:: 417
+ # HTTPPreconditionRequired:: 428
+ # HTTPTooManyRequests:: 429
+ # HTTPRequestHeaderFieldsTooLarge:: 431
# HTTPServerError:: 5xx
# HTTPInternalServerError:: 500
# HTTPNotImplemented:: 501
@@ -354,6 +357,7 @@
# HTTPServiceUnavailable:: 503
# HTTPGatewayTimeOut:: 504
# HTTPVersionNotSupported:: 505
+ # HTTPNetworkAuthenticationRequired:: 511
#
# There is also the Net::HTTPBadResponse exception which is raised when
# there is a protocol error.
@@ -2387,6 +2391,9 @@
# 415 HTTPUnsupportedMediaType
# 416 HTTPRequestedRangeNotSatisfiable
# 417 HTTPExpectationFailed
+ # 428 HTTPPreconditionRequired
+ # 429 HTTPTooManyRequests
+ # 431 HTTPRequestHeaderFieldsTooLarge
#
# 5xx HTTPServerError
# 500 HTTPInternalServerError
@@ -2395,6 +2402,7 @@
# 503 HTTPServiceUnavailable
# 504 HTTPGatewayTimeOut
# 505 HTTPVersionNotSupported
+ # 511 HTTPNetworkAuthenticationRequired
#
# xxx HTTPUnknownResponse
#
@@ -2544,25 +2552,37 @@
class HTTPExpectationFailed < HTTPClientError # 417
HAS_BODY = true
end
+ class HTTPPreconditionRequired < HTTPClientError # 428
+ HAS_BODY = true
+ end
+ class HTTPTooManyRequests < HTTPClientError # 429
+ HAS_BODY = true
+ end
+ class HTTPRequestHeaderFieldsTooLarge < HTTPClientError # 431
+ HAS_BODY = true
+ end

  • class HTTPInternalServerError < HTTPServerError # 500
  • class HTTPInternalServerError < HTTPServerError # 500 HAS_BODY = true end
  • class HTTPNotImplemented < HTTPServerError # 501
  • class HTTPNotImplemented < HTTPServerError # 501 HAS_BODY = true end
  • class HTTPBadGateway < HTTPServerError # 502
  • class HTTPBadGateway < HTTPServerError # 502 HAS_BODY = true end
  • class HTTPServiceUnavailable < HTTPServerError # 503
  • class HTTPServiceUnavailable < HTTPServerError # 503 HAS_BODY = true end
  • class HTTPGatewayTimeOut < HTTPServerError # 504
  • class HTTPGatewayTimeOut < HTTPServerError # 504 HAS_BODY = true end
  • class HTTPVersionNotSupported < HTTPServerError # 505
  • class HTTPVersionNotSupported < HTTPServerError # 505 HAS_BODY = true end
  • class HTTPNetworkAuthenticationRequired < HTTPServerError # 511
  • HAS_BODY = true
  • end

    :startdoc:

@@ -2614,13 +2634,17 @@
'415' => HTTPUnsupportedMediaType,
'416' => HTTPRequestedRangeNotSatisfiable,
'417' => HTTPExpectationFailed,
+ '428' => HTTPPreconditionRequired,
+ '429' => HTTPTooManyRequests,
+ '431' => HTTPRequestHeaderFieldsTooLarge,

    '500' => HTTPInternalServerError,
    '501' => HTTPNotImplemented,
    '502' => HTTPBadGateway,
    '503' => HTTPServiceUnavailable,
    '504' => HTTPGatewayTimeOut,
  • '505' => HTTPVersionNotSupported
  • '505' => HTTPVersionNotSupported,
  •  '511' => HTTPNetworkAuthenticationRequired
    

    }

    class << HTTPResponse

--


Sangil Jung.

+82.10.6402-4639
http://humbroll.com

additional_http_status_code_from_rfc_6585.patch Magnifier (4.42 KB) Sangil Jung, 05/23/2012 05:37 AM

net.http.rfc6585.patch Magnifier - Correct updated patch (5.11 KB) Eric Hodel, 05/23/2012 07:36 AM

Associated revisions

Revision 35970
Added by Eric Hodel almost 3 years ago

  • lib/net/http/responses.rb: Add RFC 6586 response codes. Patch by Sangil Jung. [ruby-trunk - Feature #6480]
  • lib/net/http/response.rb: ditto
  • lib/net/http.rb: ditto
  • lib/webrick/httpstatus.rb: ditto

Revision 35970
Added by Eric Hodel almost 3 years ago

  • lib/net/http/responses.rb: Add RFC 6586 response codes. Patch by Sangil Jung. [ruby-trunk - Feature #6480]
  • lib/net/http/response.rb: ditto
  • lib/net/http.rb: ditto
  • lib/webrick/httpstatus.rb: ditto

History

#1 Updated by Eric Hodel almost 3 years ago

  • File net.http.rfc6585.patch added
  • Category set to lib
  • Target version set to 2.0.0

Here is an updated patch after #6435

#2 Updated by Eric Hodel almost 3 years ago

Oops, I forgot a comma in my patch.

#3 Updated by Eric Hodel almost 3 years ago

  • File deleted (net.http.rfc6585.patch)

#4 Updated by Yusuke Endoh almost 3 years ago

  • Status changed from Open to Assigned
  • Assignee set to Eric Hodel

#5 Updated by Yusuke Endoh almost 3 years ago

Please commit it unless there is objection within a few days or a week.
Thanks!

Yusuke Endoh mame@tsg.ne.jp

#6 Updated by Yui NARUSE almost 3 years ago

mame (Yusuke Endoh) wrote:

Please commit it unless there is objection within a few days or a week.
Thanks!

I also agree.
Eric, could you commit it?

#7 Updated by Eric Hodel almost 3 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r35970.
Sangil, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • lib/net/http/responses.rb: Add RFC 6586 response codes. Patch by Sangil Jung. [ruby-trunk - Feature #6480]
  • lib/net/http/response.rb: ditto
  • lib/net/http.rb: ditto
  • lib/webrick/httpstatus.rb: ditto

Also available in: Atom PDF