]> gitweb.factorcode.org Git - factor.git/blob - basis/http/server/responses/responses.factor
Switch to https urls
[factor.git] / basis / http / server / responses / responses.factor
1 ! Copyright (C) 2008, 2010 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors http io.encodings.utf8 io.streams.string kernel
4 xml.syntax xml.writer ;
5 IN: http.server.responses
6
7 : <content> ( body content-type -- response )
8     <response>
9         200 >>code
10         "Document follows" >>message
11         utf8 >>content-encoding
12         swap >>content-type
13         swap >>body ;
14
15 : <text-content> ( body -- response )
16     "text/plain" <content> ;
17
18 : <html-content> ( body -- response )
19     "text/html" <content> ;
20
21 : trivial-response-body ( code message -- )
22     <XML
23         <!DOCTYPE html>
24         <html>
25             <body>
26                 <h1><-> <-></h1>
27             </body>
28         </html>
29     XML> write-xml ;
30
31 : <trivial-response> ( code message -- response )
32     2dup [ trivial-response-body ] with-string-writer
33     <html-content>
34         swap >>message
35         swap >>code ;
36
37 : <100> ( -- response ) "100" "Continue" <trivial-response> ;
38 : <101> ( -- response ) "101" "Switching Protocols" <trivial-response> ;
39 : <102> ( -- response ) "102" "Processing" <trivial-response> ;
40 : <200> ( -- response ) "200" "OK" <trivial-response> ;
41 : <201> ( -- response ) "201" "Created" <trivial-response> ;
42 : <202> ( -- response ) "202" "Accepted" <trivial-response> ;
43 : <203> ( -- response ) "203" "Non-Authoritative Information" <trivial-response> ;
44 : <204> ( -- response ) "204" "No Content" <trivial-response> ;
45 : <205> ( -- response ) "205" "Reset Content" <trivial-response> ;
46 : <206> ( -- response ) "206" "Partial Content" <trivial-response> ;
47 : <207> ( -- response ) "207" "Multi-Status" <trivial-response> ;
48 : <208> ( -- response ) "208" "Already Reported" <trivial-response> ;
49 : <226> ( -- response ) "226" "IM Used" <trivial-response> ;
50 : <300> ( -- response ) "300" "Multiple Choices" <trivial-response> ;
51 : <301> ( -- response ) "301" "Moved Permanently" <trivial-response> ;
52 : <302> ( -- response ) "302" "Found" <trivial-response> ;
53 : <303> ( -- response ) "303" "See Other" <trivial-response> ;
54 : <304> ( -- response ) "304" "Not Modified" <trivial-response> ;
55 : <305> ( -- response ) "305" "Use Proxy" <trivial-response> ;
56 : <306> ( -- response ) "306" "(Unused)" <trivial-response> ;
57 : <307> ( -- response ) "307" "Temporary Redirect" <trivial-response> ;
58 : <308> ( -- response ) "308" "Permanent Redirect" <trivial-response> ;
59 : <400> ( -- response ) "400" "Bad Request" <trivial-response> ;
60 : <401> ( -- response ) "401" "Unauthorized" <trivial-response> ;
61 : <402> ( -- response ) "402" "Payment Required" <trivial-response> ;
62 : <403> ( -- response ) "403" "Forbidden" <trivial-response> ;
63 : <404> ( -- response ) "404" "Not Found" <trivial-response> ;
64 : <405> ( -- response ) "405" "Method Not Allowed" <trivial-response> ;
65 : <406> ( -- response ) "406" "Not Acceptable" <trivial-response> ;
66 : <407> ( -- response ) "407" "Proxy Authentication Required" <trivial-response> ;
67 : <408> ( -- response ) "408" "Request Timeout" <trivial-response> ;
68 : <409> ( -- response ) "409" "Conflict" <trivial-response> ;
69 : <410> ( -- response ) "410" "Gone" <trivial-response> ;
70 : <411> ( -- response ) "411" "Length Required" <trivial-response> ;
71 : <412> ( -- response ) "412" "Precondition Failed" <trivial-response> ;
72 : <413> ( -- response ) "413" "Payload Too Large" <trivial-response> ;
73 : <414> ( -- response ) "414" "URI Too Long" <trivial-response> ;
74 : <415> ( -- response ) "415" "Unsupported Media Type" <trivial-response> ;
75 : <416> ( -- response ) "416" "Range Not Satisfiable" <trivial-response> ;
76 : <417> ( -- response ) "417" "Expectation Failed" <trivial-response> ;
77 : <421> ( -- response ) "421" "Misdirected Request" <trivial-response> ;
78 : <422> ( -- response ) "422" "Unprocessable Entity" <trivial-response> ;
79 : <423> ( -- response ) "423" "Locked" <trivial-response> ;
80 : <424> ( -- response ) "424" "Failed Dependency" <trivial-response> ;
81 : <426> ( -- response ) "426" "Upgrade Required" <trivial-response> ;
82 : <428> ( -- response ) "428" "Precondition Required" <trivial-response> ;
83 : <429> ( -- response ) "429" "Too Many Requests" <trivial-response> ;
84 : <431> ( -- response ) "431" "Request Header Fields Too Large" <trivial-response> ;
85 : <451> ( -- response ) "451" "Unavailable For Legal Reasons" <trivial-response> ;
86 : <500> ( -- response ) "500" "Internal Server Error" <trivial-response> ;
87 : <501> ( -- response ) "501" "Not Implemented" <trivial-response> ;
88 : <502> ( -- response ) "502" "Bad Gateway" <trivial-response> ;
89 : <503> ( -- response ) "503" "Service Unavailable" <trivial-response> ;
90 : <504> ( -- response ) "504" "Gateway Timeout" <trivial-response> ;
91 : <505> ( -- response ) "505" "HTTP Version Not Supported" <trivial-response> ;
92 : <506> ( -- response ) "506" "Variant Also Negotiates" <trivial-response> ;
93 : <507> ( -- response ) "507" "Insufficient Storage" <trivial-response> ;
94 : <508> ( -- response ) "508" "Loop Detected" <trivial-response> ;
95 : <510> ( -- response ) "510" "Not Extended" <trivial-response> ;
96 : <511> ( -- response ) "511" "Network Authentication Required" <trivial-response> ;