diff mod_http_oauth2/mod_http_oauth2.lua @ 5400:71766a4a7322

mod_http_oauth2: Reduce line count of metadata construction More compact and readable than long if-then chains
author Kim Alvefur <zash@zash.se>
date Tue, 02 May 2023 16:14:22 +0200
parents 89c9e9bba60d
children c8d04ac200fc
line wrap: on
line diff
--- 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