mirror of
https://github.com/bjc/prosody.git
synced 2025-04-01 20:27:39 +03:00
46 lines
1.3 KiB
Lua
46 lines
1.3 KiB
Lua
-- Generate net/http/codes.lua from IANA HTTP status code registry
|
|
if not pcall(require, "prosody.loader") then
|
|
pcall(require, "loader");
|
|
end
|
|
|
|
local xml = require "prosody.util.xml";
|
|
local registry = xml.parse(io.read("*a"), { allow_processing_instructions = true });
|
|
|
|
io.write([[
|
|
|
|
local response_codes = {
|
|
-- Source: http://www.iana.org/assignments/http-status-codes
|
|
]]);
|
|
|
|
for record in registry:get_child("registry"):childtags("record") do
|
|
-- Extract values
|
|
local value = record:get_child_text("value");
|
|
local description = record:get_child_text("description");
|
|
local ref = record:get_child_text("xref");
|
|
local code = tonumber(value);
|
|
|
|
-- Space between major groups
|
|
if code and code % 100 == 0 then
|
|
io.write("\n");
|
|
end
|
|
|
|
-- Reserved and Unassigned entries should be not be included
|
|
if description == "Reserved" or description == "Unassigned" or description == "(Unused)" then
|
|
code = nil;
|
|
end
|
|
|
|
-- Non-empty references become comments
|
|
if ref and ref:find("%S") then
|
|
ref = " -- " .. ref;
|
|
else
|
|
ref = "";
|
|
end
|
|
|
|
io.write((code and "\t[%d] = %q;%s\n" or "\t-- [%s] = %q;%s\n"):format(code or value, description, ref));
|
|
end
|
|
|
|
io.write([[};
|
|
|
|
for k,v in pairs(response_codes) do response_codes[k] = k.." "..v; end
|
|
return setmetatable(response_codes, { __index = function(_, k) return k.." Unassigned"; end })
|
|
]]);
|