Project

General

Profile

Actions

Feature #6480

closed

[PATCH] Add HTTP status codes from RFC 6585

Added by humbroll (Sangil Jung) about 10 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
Target version:
[ruby-core:45175]

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


Files

additional_http_status_code_from_rfc_6585.patch (4.42 KB) additional_http_status_code_from_rfc_6585.patch humbroll (Sangil Jung), 05/23/2012 05:37 AM
net.http.rfc6585.patch (5.11 KB) net.http.rfc6585.patch Correct updated patch drbrain (Eric Hodel), 05/23/2012 07:36 AM

Updated by drbrain (Eric Hodel) about 10 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

Updated by drbrain (Eric Hodel) about 10 years ago

Oops, I forgot a comma in my patch.

Actions #3

Updated by drbrain (Eric Hodel) about 10 years ago

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

Updated by mame (Yusuke Endoh) almost 10 years ago

  • Status changed from Open to Assigned
  • Assignee set to drbrain (Eric Hodel)

Updated by mame (Yusuke Endoh) almost 10 years ago

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

--
Yusuke Endoh

Updated by naruse (Yui NARUSE) almost 10 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?

Actions #7

Updated by drbrain (Eric Hodel) almost 10 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
Actions

Also available in: Atom PDF