refactor router methods to use rest parameters for handler functions

This commit is contained in:
2025-03-17 09:34:41 +01:00
parent 3e7851aae2
commit 308301cb2c
2 changed files with 70 additions and 65 deletions

82
dist/router.js vendored
View File

@ -77,28 +77,28 @@ export default class Router {
this.tpl = obj;
}
}
get(path, cb) {
this.registerRoute(path, "get", cb);
get(path, ...callback) {
this.registerRoute(path, "get", callback);
return this;
}
post(path, cb) {
this.registerRoute(path, "post", cb);
post(path, ...callback) {
this.registerRoute(path, "post", callback);
return this;
}
head(path, cb) {
this.registerRoute(path, "head", cb);
head(path, ...callback) {
this.registerRoute(path, "head", callback);
return this;
}
put(path, cb) {
this.registerRoute(path, "put", cb);
put(path, ...callback) {
this.registerRoute(path, "put", callback);
return this;
}
delete(path, cb) {
this.registerRoute(path, "delete", cb);
delete(path, ...callback) {
this.registerRoute(path, "delete", callback);
return this;
}
patch(path, cb) {
this.registerRoute(path, "patch", cb);
patch(path, ...callback) {
this.registerRoute(path, "patch", callback);
return this;
}
registerRoute(path, method, handler) {
@ -157,37 +157,37 @@ export default class Router {
static({ dir = path.resolve() + "/public", route = /^\/public/ }) {
if (!this.mimes.size)
this.readMimes();
this.get(route, [(req, res) => {
try {
const filename = req.url.pathname.replace(route, "") || "index.html";
const mime = this.mimes.get(filename.split(".").pop() || "");
const file = path.join(dir, filename);
const stat = fs.statSync(file);
if (req.headers.range) {
const [startStr, endStr] = req.headers.range.replace(/bytes=/, "").split("-");
const start = parseInt(startStr, 10);
const end = endStr ? parseInt(endStr, 10) : stat.size - 1;
res.writeHead(206, {
"Content-Range": `bytes ${start}-${end}/${stat.size}`,
"Accept-Ranges": "bytes",
"Content-Length": end - start + 1,
"Content-Type": mime,
});
fs.createReadStream(file, { start, end }).pipe(res);
}
else {
res.writeHead(200, {
"Content-Length": stat.size,
"Content-Type": mime,
});
fs.createReadStream(file).pipe(res);
}
this.get(route, (req, res, next) => {
try {
const filename = req.url.pathname.replace(route, "") || "index.html";
const mime = this.mimes.get(filename.split(".").pop() || "");
const file = path.join(dir, filename);
const stat = fs.statSync(file);
if (req.headers.range) {
const [startStr, endStr] = req.headers.range.replace(/bytes=/, "").split("-");
const start = parseInt(startStr, 10);
const end = endStr ? parseInt(endStr, 10) : stat.size - 1;
res.writeHead(206, {
"Content-Range": `bytes ${start}-${end}/${stat.size}`,
"Accept-Ranges": "bytes",
"Content-Length": end - start + 1,
"Content-Type": mime,
});
fs.createReadStream(file, { start, end }).pipe(res);
}
catch (err) {
console.error(err);
res.reply({ code: 404, body: "404 - File not found" });
else {
res.writeHead(200, {
"Content-Length": stat.size,
"Content-Type": mime,
});
fs.createReadStream(file).pipe(res);
}
}]);
}
catch (err) {
console.error(err);
res.reply({ code: 404, body: "404 - File not found" });
}
});
return this;
}
}