# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1683036862 -7200
# Node ID 71766a4a7322e26ee30ab443a028ae41b651a474
# Parent  89c9e9bba60d2199189260f1a4a1f1903c2acdc6
mod_http_oauth2: Reduce line count of metadata construction

More compact and readable than long if-then chains

diff -r 89c9e9bba60d -r 71766a4a7322 mod_http_oauth2/mod_http_oauth2.lua
--- a/mod_http_oauth2/mod_http_oauth2.lua	Tue May 02 16:08:35 2023 +0200
+++ b/mod_http_oauth2/mod_http_oauth2.lua	Tue May 02 16:14:22 2023 +0200
@@ -21,6 +21,12 @@
 	return (base64.encode(s):gsub("[+/=]", { ["+"] = "-", ["/"] = "_", ["="] = "" }))
 end
 
+local function tmap(t)
+	return function(k)
+		return t[k];
+	end
+end
+
 local function read_file(base_path, fn, required)
 	local f, err = io.open(base_path .. "/" .. fn);
 	if not f then
@@ -956,20 +962,8 @@
 				revocation_endpoint = handle_revocation_request and module:http_url() .. "/revoke" or nil;
 				revocation_endpoint_auth_methods_supported = array({ "client_secret_basic" });
 				code_challenge_methods_supported = array(it.keys(verifier_transforms));
-				grant_types_supported = array(it.keys(response_type_handlers)):map(function(h)
-					if h == "token" then
-						return "implicit"
-					elseif h == "code" then
-						return "authorization_code"
-					end
-				end);
-				response_modes_supported = array(it.keys(response_type_handlers)):map(function(h)
-					if h == "token" then
-						return "fragment"
-					elseif h == "code" then
-						return "query"
-					end
-				end);
+				grant_types_supported = array(it.keys(response_type_handlers)):map(tmap { token = "implicit"; code = "authorization_code" });
+				response_modes_supported = array(it.keys(response_type_handlers)):map(tmap { token = "fragment"; code = "query" });
 				authorization_response_iss_parameter_supported = true;
 
 				-- OpenID