]> gitweb.factorcode.org Git - factor.git/commitdiff
http.server.responses: load trivial responses from a text file.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sun, 10 Jul 2016 22:26:58 +0000 (15:26 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sun, 10 Jul 2016 22:29:18 +0000 (15:29 -0700)
basis/http/server/responses/http-status-codes.txt [new file with mode: 0644]
basis/http/server/responses/responses.factor

diff --git a/basis/http/server/responses/http-status-codes.txt b/basis/http/server/responses/http-status-codes.txt
new file mode 100644 (file)
index 0000000..b928c07
--- /dev/null
@@ -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
index 4ab39ba557625a1f20946e6b788d4264e4570bd6..2afc8de0a58c0950a458dfffa471cfd06c4960d4 100644 (file)
@@ -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
 
 : <content> ( body content-type -- response )
@@ -33,17 +34,18 @@ IN: http.server.responses
         swap >>message
         swap >>code ;
 
-: <304> ( -- response )
-    304 "Not modified" <trivial-response> ;
-
-: <400> ( -- response )
-    400 "Bad request" <trivial-response> ;
-
-: <403> ( -- response )
-    403 "Forbidden" <trivial-response> ;
-
-: <404> ( -- response )
-    404 "Not found" <trivial-response> ;
-
-: <405> ( -- response )
-    405 "Method Not Allowed" <trivial-response> ;
+<<
+"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 '[ _ _ <trivial-response> ] ( -- response )
+    define-declared
+] each
+>>