From: zverok.offline@...
Date: 2016-11-14T19:03:00+00:00
Subject: [ruby-core:78135] [Ruby trunk Misc#12935] Webrick: Update HTTP	Status codes, share them

Issue #12935 has been updated by Victor Shepelev.


My 5c:

* It seems really reasonable to have centralized repo of status codes;
* I am not sure it should be in stdlib, why we not just do a gem?.. (With, probably, _automatic_ update from an _authorative_ source);
* Now, what would be an authoritative source? http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml (like [Wikipedia](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) says)? It is OK, but not OK, as it does not list, for example, "418 I'm a teapot" thing -- which, from one point of view is definitely a joke, but from other, it is a) properly covered with RFC and b) used in ton of occasion in reality (in place of "something weird happened").

----------------------------------------
Misc #12935: Webrick: Update HTTP Status codes, share them
https://bugs.ruby-lang.org/issues/12935#change-61499

* Author: Tiago Cardoso
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
I was looking for a common source of http status-to-reason map in ruby, and I've found many sources that address the same, some of them overlapping, most of them clearly copy-pasting from each other. In the process, I also found that the current hashmap used by webrick seems not to be up-to-date. Compare:

https://github.com/nahi/ruby/blob/webrick_trunk/lib/webrick/httpstatus.rb#L56-L97
with https://github.com/puma/puma/blob/3f66b3d7d4413f843e4e541c4d282238318c4cd2/lib/puma/const.rb#L16-L74

I started (this thread in puma)[https://github.com/puma/puma/issues/1133] to see about openness is centralizing this information in ruby (or just use an updated version of webrick hash), and I found out some interesting things, like the fact that rails reloading is not compatible with some of these things. 

My main motivation would be to have something similar to nodejs's `http.STATUS_CODES`:

 ~~~
> require("http").STATUS_CODES
{ '100': 'Continue',
  '101': 'Switching Protocols',
  '102': 'Processing',
  '200': 'OK',
  ....
~~~

As http is something which is internally implemented in ruby's stdlib, question would just remain on how and where to implement it, and public API stability and "up-to-date"ness guarantees. I'd suggest maybe making it part of "net/http", like:

~~~ruby
require "net/http/status"
puts Net::HTTP::STATUS_CODES
~~~

but that's just a suggestion. 



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>