aboutsummaryrefslogtreecommitdiff
path: root/module/web/http/status-codes.scm
blob: 86be694f365a314dd601b26349d9413c0182954f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
(define-module (web http status-codes)
  :use-module (srfi srfi-88)
  :export (http-status-codes
           http-status-phrase
           http-status-line))

;;; https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
;;; DAV: RFC4918

(define http-status-codes
  '((100 . "Continue")
    (101 . "Switching Protocols")
    (102 . "Processing")                  ;RFC2518
    (103 . "Early Hints")                 ;RFC8297

    (200 . "OK")
    (201 . "Created")
    (202 . "Accepted")
    (203 . "Non-Authoritative Information")
    (204 . "No Content")
    (205 . "Reset Content")
    (206 . "Partial Content")
    (207 . "Multi-Status")                ;DAV
    (208 . "Already Reported")            ;RFC5842
    (226 . "IM Used")                     ;RFC3229

    (300 . "Multiple Choices")
    (301 . "Moved Permanently")
    (302 . "Found")
    (303 . "See Other")
    (304 . "Not Modified")
    (305 . "Use Proxy")
    (306 . "(Unused)")
    (307 . "Temporary Redirect")
    (308 . "Permanent Redirect")

    (400 . "Bad Request")
    (401 . "Unauthorized")
    (402 . "Payment Required")
    (403 . "Forbidden")
    (404 . "Not Found")
    (405 . "Method Not Allowed")
    (406 . "Not Acceptable")
    (407 . "Proxy Authentication Required")
    (408 . "Request Timeout")
    (409 . "Conflict")
    (410 . "Gone")
    (411 . "Length Required")
    (412 . "Precondition Failed")         ;Extended by DAV
    (413 . "Request Entity Too Large")
    (414 . "Request-URI Too Long")        ;Extended by DAV
    (415 . "Unsupported Media Type")
    (416 . "Requested Range Not Satisfiable")
    (417 . "Expectation Failed")
    (418 . "I'm a teapot")                ;RFC7168
    (421 . "Misdirection Request")
    (422 . "Unprocessable Content")
    (423 . "Locked")                      ;DAV
    (424 . "Failed Dependency")           ;DAV
    (425 . "Too Early")                   ;RFC8470
    (426 . "Upgrade Required")
    (428 . "Precondition Failed")         ;RFC6585
    (429 . "Too Many Requests")           ;RFC6585
    (431 . "Request Header Fields Too Large") ;RFC6585
    (451 . "Unavailable For Legal Reasons") ;RFC7225

    (500 . "Internal Server Error")
    (501 . "Not Implemented")
    (502 . "Bad Gateway")
    (503 . "Service Unavailable")
    (504 . "Gateway Timeout")
    (505 . "HTTP Version Not Supported")
    (506 . "Variant Also Negotiates")     ;RFC2295
    (507 . "Insufficient Storage")        ;DAV
    (508 . "Loop Detected")               ;RFC5842
    (510 . "Not Extended")                ;RFC2774 (OBSOLETED)
    (511 . "Network Authentication Required") ;RFC6585
    ))


(define (http-status-phrase code)
  (or (assoc-ref http-status-codes code)
      ""))

(define* (http-status-line code optional: msg)
  (format #f "HTTP/1.1 ~a ~a" code
          (or msg (http-status-phrase code))))