diff options
author | EuAndreh <eu@euandre.org> | 2024-03-15 13:03:04 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-03-15 13:03:04 -0300 |
commit | 09083b2bc095b2e33e2a2b3a7f2d9f2ab87d161a (patch) | |
tree | ae998764ca42d4b796f0422d3ec181c27ea6c25b /src | |
parent | src/hero.mjs: Add support for "WEBSOCKET" type of route (diff) | |
download | papod-09083b2bc095b2e33e2a2b3a7f2d9f2ab87d161a.tar.gz papod-09083b2bc095b2e33e2a2b3a7f2d9f2ab87d161a.tar.xz |
src/hero.mjs: Add handlerForConnection()
Diffstat (limited to 'src')
-rw-r--r-- | src/hero.mjs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/hero.mjs b/src/hero.mjs index 10fa06e..61621af 100644 --- a/src/hero.mjs +++ b/src/hero.mjs @@ -309,6 +309,22 @@ export const buildHttpPayload = (code, { "\r\n\r\n" + message; +export const fallback404Handler = (_req, socket) => + socket.end(buildHttpPayload(404)).destroySoon(); + +export const fallback405Handler = (_req, socket) => + socket.end(buildHttpPayload(405)).destroySoon(); + +export const handlerForConnection = (table, method, path) => { + if (method !== WEBSOCKET_METHOD) { + return fallback405Handler; + } + + const segments = pathToSegments(path); + const handlerFn = u.getIn(table, [WEBSOCKET_KEYWORD, WEBSOCKET_METHOD].concat(segments)); + return handlerFn || fallback404Handler; +}; + export const makeRequestListener = table => async (req, res) => { const { status, headers, body } = await handleRequest(table, req); res.writeHead(status, headers); |