local response_codes = { -- Source: http://www.iana.org/assignments/http-status-codes -- s/^\(\d*\)\s*\(.*\S\)\s*\[RFC.*\]\s*$/^I["\1"] = "\2"; [100] = "Continue"; [101] = "Switching Protocols"; [102] = "Processing"; [200] = "OK"; [201] = "Created"; [202] = "Accepted"; [203] = "Non-Authoritative Information"; [204] = "No Content"; [205] = "Reset Content"; [206] = "Partial Content"; [207] = "Multi-Status"; [208] = "Already Reported"; [226] = "IM Used"; [300] = "Multiple Choices"; [301] = "Moved Permanently"; [302] = "Found"; [303] = "See Other"; [304] = "Not Modified"; [305] = "Use Proxy"; -- The 306 status code was used in a previous version of [RFC2616], is no longer used, and the code is reserved. [307] = "Temporary 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"; [413] = "Request Entity Too Large"; [414] = "Request-URI Too Long"; [415] = "Unsupported Media Type"; [416] = "Requested Range Not Satisfiable"; [417] = "Expectation Failed"; [418] = "I'm a teapot"; [422] = "Unprocessable Entity"; [423] = "Locked"; [424] = "Failed Dependency"; -- The 425 status code is reserved for the WebDAV advanced collections expired proposal [RFC2817] [426] = "Upgrade Required"; [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"; -- Experimental [507] = "Insufficient Storage"; [508] = "Loop Detected"; [510] = "Not Extended"; }; for k,v in pairs(response_codes) do response_codes[k] = k.." "..v; end return setmetatable(response_codes, { __index = function(t, k) return k.." Unassigned"; end })