File

tools/http-status-codes.lua @ 11900:60676b607b6d

s2smanager: Fire s2s-destroyed event to mirror s2s-created The existing events do not fire for unauthed sessions, for example (because the type does not match). I deemed changing their behaviour too risky, and the current behaviour may even be more desirable for some uses. This means we now have roughly paired events: - s2s-created -> s2s-destroyed (global only) - s2sin-established -> s2sin-destroyed (global + host) - s2sout-established -> s2sout-destroyed (global + host)
author Matthew Wild <mwild1@gmail.com>
date Fri, 12 Nov 2021 13:30:39 +0000
parent 9166:cce55767004a
child 12271:f31bb79f51d7
line wrap: on
line source

-- Generate net/http/codes.lua from IANA HTTP status code registry

local xml = require "util.xml";
local registry = xml.parse(io.read("*a"));

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 })
]]);