From af96e03db9eab2a468561d1d82a32e8a7b01da90 Mon Sep 17 00:00:00 2001 From: Alexis Hovorka Date: Tue, 13 Feb 2024 23:10:49 -0700 Subject: [feat] Centralize basic utility functions --- app/utils.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 app/utils.js diff --git a/app/utils.js b/app/utils.js new file mode 100644 index 0000000..2ff2b9c --- /dev/null +++ b/app/utils.js @@ -0,0 +1,23 @@ +"use strict"; + +const ct = module.exports.ct = (res, mime, code, head) => + res.writeHead(code||200, Object.apply({"Content-Type": mime||"application/json"}, head)); +module.exports.sj = (res, data, {code, head}={}) => { ct(res, null, code, head); res.end(JSON.stringify(data)); } + +module.exports.res204 = (res) => { res.statusCode = 204; res.end(); } +module.exports.err400 = (res, msg) => { ct(res, "text/plain", 400); res.end(""+(msg||"400 Bad Request")); } +module.exports.err401 = (res, msg) => { ct(res, "text/plain", 401); res.end(""+(msg||"401 Unauthorized")); } +module.exports.err403 = (res, msg) => { ct(res, "text/plain", 403); res.end(""+(msg||"403 Forbidden")); } +module.exports.err404 = (res, msg) => { ct(res, "text/plain", 404); res.end(""+(msg||"404 Not Found")); } +module.exports.err500 = (res, msg) => { ct(res, "text/plain", 500); res.end(""+(msg||"500 Internal Server Error")); + console.log(Date.now+" [ERROR] 500"); } + +module.exports.cors = fn => (req, res, ...rest) => { + res.setHeader("Access-Control-Allow-Origin", "*"); + res.setHeader("Access-Control-Allow-Methods", "GET, POST"); + fn(req, res, ...rest); }; + +module.exports.parseCookies = req => + req.headers.cookie?.split(";") + .map(c => c.split("=").map(s => decodeURIComponent(s.trim()))) + .reduce((a,c) => (a[c[0]]=c[1],a), {}); -- cgit v1.2.3-54-g00ecf