From b9cd8087397d3f0de4619d6b88de76a7aca2490e Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Sat, 16 Mar 2024 06:33:43 -0300 Subject: src/hero.mjs: findHandler(): learn how to find upgrade routes --- src/hero.mjs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/hero.mjs') diff --git a/src/hero.mjs b/src/hero.mjs index 131b796..7483a21 100644 --- a/src/hero.mjs +++ b/src/hero.mjs @@ -314,8 +314,8 @@ export const addRoute = (table, methods, path, handlerFn) => { ); }; -export const findStaticHandler = (table, method, segments) => { - const handlerFn = u.getIn(table, ["static", method].concat(segments)); +export const findStaticHandler = (table, method, segments, section) => { + const handlerFn = u.getIn(table, [section, method].concat(segments)); return !handlerFn ? null : { handlerFn, params: {} }; }; @@ -362,12 +362,14 @@ export const findDynamicHandler = (table, method, segments) => { return !tree ? null : firstParamMatch(tree, segments, {}); }; -export const findHandler = (table, method, path) => { +export const findHandler = (table, method, path, upgrade) => { const segments = pathToSegments(path); - return ( - findStaticHandler(table, method, segments) || - findDynamicHandler(table, method, segments) - ); + return upgrade ? + findStaticHandler(table, method, segments, "websocket") : + ( + findStaticHandler(table, method, segments, "static") || + findDynamicHandler(table, method, segments) + ); }; export const extractQueryParams = s => { @@ -392,7 +394,7 @@ export const handleRequest = async (table, reqHandle) => { const { method, url, headers, upgrade, socket } = reqHandle; const [ path, queryParams ] = url.split("?"); const { params, handlerFn } = ( - findHandler(table, method, path) || + findHandler(table, method, path, upgrade) || make404Handler(table.interceptors) ); -- cgit v1.2.3