diff --git a/basis/http/server/responses/http-status-codes.txt b/basis/http/server/responses/http-status-codes.txt new file mode 100644 index 0000000000..b928c07e99 --- /dev/null +++ b/basis/http/server/responses/http-status-codes.txt @@ -0,0 +1,110 @@ + Hypertext Transfer Protocol (HTTP) Status Code Registry + + Last Updated + 2016-03-01 + + Available Formats + [IMG] + XML [IMG] + HTML [IMG] + Plain text + + Registry included below + + * HTTP Status Codes + +HTTP Status Codes + + Registration Procedure(s) + + IETF Review + + Reference + [RFC7231] + + Note + + 1xx: Informational - Request received, continuing process + 2xx: Success - The action was successfully received, understood, and accepted + 3xx: Redirection - Further action must be taken in order to complete the request + 4xx: Client Error - The request contains bad syntax or cannot be fulfilled + 5xx: Server Error - The server failed to fulfill an apparently valid request + + + Available Formats + [IMG] + CSV + + Value Description Reference + 100 Continue [RFC7231, Section 6.2.1] + 101 Switching Protocols [RFC7231, Section 6.2.2] + 102 Processing [RFC2518] + 103-199 Unassigned + 200 OK [RFC7231, Section 6.3.1] + 201 Created [RFC7231, Section 6.3.2] + 202 Accepted [RFC7231, Section 6.3.3] + 203 Non-Authoritative Information [RFC7231, Section 6.3.4] + 204 No Content [RFC7231, Section 6.3.5] + 205 Reset Content [RFC7231, Section 6.3.6] + 206 Partial Content [RFC7233, Section 4.1] + 207 Multi-Status [RFC4918] + 208 Already Reported [RFC5842] + 209-225 Unassigned + 226 IM Used [RFC3229] + 227-299 Unassigned + 300 Multiple Choices [RFC7231, Section 6.4.1] + 301 Moved Permanently [RFC7231, Section 6.4.2] + 302 Found [RFC7231, Section 6.4.3] + 303 See Other [RFC7231, Section 6.4.4] + 304 Not Modified [RFC7232, Section 4.1] + 305 Use Proxy [RFC7231, Section 6.4.5] + 306 (Unused) [RFC7231, Section 6.4.6] + 307 Temporary Redirect [RFC7231, Section 6.4.7] + 308 Permanent Redirect [RFC7538] + 309-399 Unassigned + 400 Bad Request [RFC7231, Section 6.5.1] + 401 Unauthorized [RFC7235, Section 3.1] + 402 Payment Required [RFC7231, Section 6.5.2] + 403 Forbidden [RFC7231, Section 6.5.3] + 404 Not Found [RFC7231, Section 6.5.4] + 405 Method Not Allowed [RFC7231, Section 6.5.5] + 406 Not Acceptable [RFC7231, Section 6.5.6] + 407 Proxy Authentication Required [RFC7235, Section 3.2] + 408 Request Timeout [RFC7231, Section 6.5.7] + 409 Conflict [RFC7231, Section 6.5.8] + 410 Gone [RFC7231, Section 6.5.9] + 411 Length Required [RFC7231, Section 6.5.10] + 412 Precondition Failed [RFC7232, Section 4.2] + 413 Payload Too Large [RFC7231, Section 6.5.11] + 414 URI Too Long [RFC7231, Section 6.5.12] + 415 Unsupported Media Type [RFC7231, Section 6.5.13][RFC7694, Section 3] + 416 Range Not Satisfiable [RFC7233, Section 4.4] + 417 Expectation Failed [RFC7231, Section 6.5.14] + 418-420 Unassigned + 421 Misdirected Request [RFC7540, Section 9.1.2] + 422 Unprocessable Entity [RFC4918] + 423 Locked [RFC4918] + 424 Failed Dependency [RFC4918] + 425 Unassigned + 426 Upgrade Required [RFC7231, Section 6.5.15] + 427 Unassigned + 428 Precondition Required [RFC6585] + 429 Too Many Requests [RFC6585] + 430 Unassigned + 431 Request Header Fields Too Large [RFC6585] + 432-450 Unassigned + 451 Unavailable For Legal Reasons [RFC7725] + 452-499 Unassigned + 500 Internal Server Error [RFC7231, Section 6.6.1] + 501 Not Implemented [RFC7231, Section 6.6.2] + 502 Bad Gateway [RFC7231, Section 6.6.3] + 503 Service Unavailable [RFC7231, Section 6.6.4] + 504 Gateway Timeout [RFC7231, Section 6.6.5] + 505 HTTP Version Not Supported [RFC7231, Section 6.6.6] + 506 Variant Also Negotiates [RFC2295] + 507 Insufficient Storage [RFC4918] + 508 Loop Detected [RFC5842] + 509 Unassigned + 510 Not Extended [RFC2774] + 511 Network Authentication Required [RFC6585] + 512-599 Unassigned diff --git a/basis/http/server/responses/responses.factor b/basis/http/server/responses/responses.factor index 4ab39ba557..2afc8de0a5 100644 --- a/basis/http/server/responses/responses.factor +++ b/basis/http/server/responses/responses.factor @@ -1,7 +1,8 @@ ! Copyright (C) 2008, 2010 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: math.parser http accessors kernel xml.syntax xml.writer -io io.streams.string io.encodings.utf8 ; +USING: accessors fry http io io.encodings.utf8 io.files +io.streams.string kernel math math.parser parser sequences +splitting unicode words xml.syntax xml.writer ; IN: http.server.responses : ( body content-type -- response ) @@ -33,17 +34,18 @@ IN: http.server.responses swap >>message swap >>code ; -: <304> ( -- response ) - 304 "Not modified" ; - -: <400> ( -- response ) - 400 "Bad request" ; - -: <403> ( -- response ) - 403 "Forbidden" ; - -: <404> ( -- response ) - 404 "Not found" ; - -: <405> ( -- response ) - 405 "Method Not Allowed" ; +<< +"vocab:http/server/responses/http-status-codes.txt" +utf8 file-lines [ [ blank? ] trim ] map +dup [ "Value" head? ] find drop 1 + tail +[ "Unassigned" swap subseq? ] reject +[ + "[RFC" over start head " " split1 [ blank? ] trim + [ + [ + "<" ">" surround create-word-in dup reset-generic + ] keep string>number + ] dip '[ _ _ ] ( -- response ) + define-declared +] each +>>