#lang racket/base
(require racket/match)
(provide http-message)

; Return the message corresponding to the given code
(define (http-message code)
  (match code
    (200 #"OK")
    (404 #"Not found")
    (201 #"Created")
    (202 #"Accepted")
    (203 #"Non-Authoritative Information")
    (204 #"No Content")
    (205 #"Reset Content")
    (206 #"Partial Content")
    (226 #"IM Used")
    (300 #"Multiple Choices")
    (301 #"Moved Permanently")
    (302 #"Found")
    (303 #"See Other")
    (304 #"Not Modified")
    (305 #"Use Proxy")
    (307 #"Temporary Redirect")
    (308 #"Permanent Redirect")
    (310 #"Too many Redirects")
    (400 #"Bad Request")
    (401 #"Unauthorized")
    (402 #"Payment Required")
    (403 #"Forbidden")
    (405 #"Method Not Allowed")
    (406 #"Not Acceptable")
    (407 #"Proxy Authentication Required")
    (408 #"Request Time-out")
    (409 #"Conflict")
    (410 #"Gone")
    (411 #"Length Required")
    (412 #"Precondition Failed")
    (413 #"Request Entity Too Large")
    (414 #"Request-URI Too Long")
    (415 #"Unsupported Media Type")
    (416 #"Requested range unsatisfiable")
    (417 #"Expectation failed")
    (418 #"I'm a teapot")
    (421 #"Misdirected Request")
    (426 #"Upgrade Required")
    (428 #"Precondition Required")
    (429 #"Too Many Requests")
    (431 #"Request Header Fields Too Large")
    (451 #"Unavailable For Legal Reasons")
    (500 #"Internal Server Error")
    (501 #"Not Implemented")
    (502 #"Bad Gateway")
    (503 #"Service Unavailable")
    (504 #"Gateway Time-out")
    (505 #"HTTP Version not supported")
    (506 #"Variant Also Negotiates")
    (510 #"Not extended")
    (511 #"Network authentication")
    (_ #"Other")))
