File

tools/http-status-codes.lua @ 12696:27a72982e331

util.jwt: Add support/tests for ES256 via improved API and using util.crypto In many cases code will be either signing or verifying. With asymmetric algorithms it's clearer and more efficient to just state that once, instead of passing keys (and possibly other parameters) with every sign/verify call. This also allows earlier validation of the key used. The previous (HS256-only) sign/verify methods continue to be exposed for backwards-compatibility.
author Matthew Wild <mwild1@gmail.com>
date Fri, 01 Jul 2022 18:51:15 +0100
parent 12271:f31bb79f51d7
child 13142:879a6a33c21b
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"), { 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 })
]]);