diff options
author | EuAndreh <eu@euandre.org> | 2024-03-16 06:33:43 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-03-16 06:33:43 -0300 |
commit | b9cd8087397d3f0de4619d6b88de76a7aca2490e (patch) | |
tree | 648d60d53882a72975d72ec7e79b94944c49be01 /src | |
parent | src/hero.mjs: Add interceptors.websocketHandshake() (diff) | |
download | papod-b9cd8087397d3f0de4619d6b88de76a7aca2490e.tar.gz papod-b9cd8087397d3f0de4619d6b88de76a7aca2490e.tar.xz |
src/hero.mjs: findHandler(): learn how to find upgrade routes
Diffstat (limited to 'src')
-rw-r--r-- | src/hero.mjs | 18 |
1 files changed, 10 insertions, 8 deletions
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) ); |