Feature #6480

[PATCH] Add HTTP status codes from RFC 6585

Added by Sangil Jung almost 3 years ago. Updated over 2 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 over 2 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 over 2 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 over 2 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 over 2 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