summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-03-16 06:33:43 -0300
committerEuAndreh <eu@euandre.org>2024-03-16 06:33:43 -0300
commitb9cd8087397d3f0de4619d6b88de76a7aca2490e (patch)
tree648d60d53882a72975d72ec7e79b94944c49be01 /src
parentsrc/hero.mjs: Add interceptors.websocketHandshake() (diff)
downloadpapod-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.mjs18
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)
);