Skip to content

Commit 731d951

Browse files
committed
updates request handlers
1 parent 3f8dcbe commit 731d951

File tree

3 files changed

+113
-101
lines changed

3 files changed

+113
-101
lines changed

index.d.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,30 @@ declare type RequestValidatorHandlerType = (
1111
/** Response object */
1212
Res: ValidateResponse<any>
1313
) => void;
14+
declare type SingleHandler = (
15+
/** Handle only requests using one request method */
16+
Req: RequestValidatorHandlerType
17+
) => void;
18+
interface IValidator {
19+
/** Handles a GET request */
20+
get?: SingleHandler;
21+
/** Handles a POST request */
22+
post?: SingleHandler;
23+
/** Handles a PUT request */
24+
put?: SingleHandler;
25+
/** Handles a DELETE request */
26+
delete?: SingleHandler;
27+
/** Handles a HEAD request */
28+
head?: SingleHandler;
29+
/** Handles a CONNECT request */
30+
connect?: SingleHandler;
31+
/** Handles an OPTIONS request */
32+
options?: SingleHandler;
33+
/** Handles a TRACE request */
34+
trace?: SingleHandler;
35+
/** Handles a PATCH request */
36+
patch?: SingleHandler;
37+
}
1438
interface IValidatorProps {
1539
/** Handles a GET request */
1640
get?: RequestValidatorHandlerType;
@@ -33,6 +57,6 @@ interface IValidatorProps {
3357
}
3458
/** Specify callbacks for different methods made to an endpoint */
3559
declare type ValidateType = (handlers: IValidatorProps) => Function;
36-
interface IValidate extends IValidatorProps, ValidateType {}
60+
interface IValidate extends IValidator, ValidateType {}
3761
declare const Validate: IValidate;
3862
export default Validate;

index.js

Lines changed: 87 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,108 @@
11
"use strict";
2-
var __assign =
3-
(this && this.__assign) ||
4-
function () {
5-
__assign =
6-
Object.assign ||
7-
function (t) {
2+
var __assign = (this && this.__assign) || function () {
3+
__assign = Object.assign || function(t) {
84
for (var s, i = 1, n = arguments.length; i < n; i++) {
9-
s = arguments[i];
10-
for (var p in s)
11-
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
5+
s = arguments[i];
6+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7+
t[p] = s[p];
128
}
139
return t;
14-
};
10+
};
1511
return __assign.apply(this, arguments);
16-
};
12+
};
1713
exports.__esModule = true;
1814
var mime_types_1 = require("mime-types");
1915
var fs = require("fs");
2016
var RequestMethods = [
21-
"get",
22-
"post",
23-
"put",
24-
"delete",
25-
"head",
26-
"connect",
27-
"options",
28-
"trace",
29-
"patch",
17+
"get",
18+
"post",
19+
"put",
20+
"delete",
21+
"head",
22+
"connect",
23+
"options",
24+
"trace",
25+
"patch",
3026
];
3127
var Validate = function (handlers) {
32-
var validateResponseCallback = function (req, res) {
33-
var _handlers = __assign({}, handlers);
34-
var vResponse = __assign(__assign({}, res), {
35-
sendStatus: function (code, message) {
36-
if (message === void 0) {
37-
message = "";
38-
}
39-
res.status(code).send(message);
40-
},
41-
sendFile: function (url) {
42-
if (url === void 0) {
43-
url = "";
44-
}
28+
var validateResponseCallback = function (req, res) {
29+
var _handlers = __assign({}, handlers);
30+
var vResponse = __assign(__assign({}, res), { sendStatus: function (code, message) {
31+
if (message === void 0) { message = ""; }
32+
res.status(code).send(message);
33+
}, sendFile: function (url) {
34+
if (url === void 0) { url = ""; }
35+
try {
36+
var fileHeadType = mime_types_1.lookup(url);
37+
if (typeof fileHeadType === "string") {
38+
res.writeHead(200, {
39+
"Content-Type": fileHeadType.toString()
40+
});
41+
var rs = fs.createReadStream(url);
42+
rs.pipe(res);
43+
}
44+
else {
45+
res.status(404).send("File not found");
46+
}
47+
}
48+
catch (err) {
49+
throw err;
50+
}
51+
} });
4552
try {
46-
var fileHeadType = mime_types_1.lookup(url);
47-
if (typeof fileHeadType === "string") {
48-
res.writeHead(200, {
49-
"Content-Type": fileHeadType.toString(),
53+
RequestMethods.forEach(function (requestMethod) {
54+
if (!handlers[requestMethod]) {
55+
var invalidMethodCb = function (req, res) {
56+
res
57+
.status(405)
58+
.send("Cannot " + requestMethod.toUpperCase() + " " + req.url);
59+
};
60+
_handlers[requestMethod] = invalidMethodCb;
61+
}
5062
});
51-
var rs = fs.createReadStream(url);
52-
rs.pipe(res);
53-
} else {
54-
res.status(404).send("File not found");
55-
}
56-
} catch (err) {
57-
throw err;
63+
return _handlers[req.method.toLowerCase()](req, vResponse);
5864
}
59-
},
60-
});
61-
try {
62-
RequestMethods.forEach(function (requestMethod) {
63-
if (!handlers[requestMethod]) {
64-
var invalidMethodCb = function (req, res) {
65-
res
66-
.status(405)
67-
.send("Cannot " + requestMethod.toUpperCase() + " " + req.url);
68-
};
69-
_handlers[requestMethod] = invalidMethodCb;
65+
catch (err) {
66+
res.send("An error ocurred");
67+
throw err;
7068
}
71-
});
72-
return _handlers[req.method.toLowerCase()](req, vResponse);
73-
} catch (err) {
74-
res.send("An error ocurred");
75-
throw err;
76-
}
77-
};
78-
return validateResponseCallback;
69+
};
70+
return validateResponseCallback;
7971
};
8072
RequestMethods.forEach(function (requestMethod) {
81-
Validate[requestMethod] = function (handler) {
82-
var responseCb = function (req, res) {
83-
var method = req.method;
84-
var vResponse = __assign(__assign({}, res), {
85-
sendStatus: function (code, message) {
86-
if (message === void 0) {
87-
message = "";
88-
}
89-
res.status(code).send(message);
90-
},
91-
sendFile: function (url) {
92-
if (url === void 0) {
93-
url = "";
94-
}
95-
try {
96-
var fileHeadType = mime_types_1.lookup(url);
97-
if (typeof fileHeadType === "string") {
98-
res.writeHead(200, {
99-
"Content-Type": fileHeadType.toString(),
100-
});
101-
var rs = fs.createReadStream(url);
102-
rs.pipe(res);
103-
} else {
104-
res.status(404).send("File not found");
73+
Validate[requestMethod] = function (handler) {
74+
var responseCb = function (req, res) {
75+
var method = req.method;
76+
var vResponse = __assign(__assign({}, res), { sendStatus: function (code, message) {
77+
if (message === void 0) { message = ""; }
78+
res.status(code).send(message);
79+
}, sendFile: function (url) {
80+
if (url === void 0) { url = ""; }
81+
try {
82+
var fileHeadType = mime_types_1.lookup(url);
83+
if (typeof fileHeadType === "string") {
84+
res.writeHead(200, {
85+
"Content-Type": fileHeadType.toString()
86+
});
87+
var rs = fs.createReadStream(url);
88+
rs.pipe(res);
89+
}
90+
else {
91+
res.status(404).send("File not found");
92+
}
93+
}
94+
catch (err) {
95+
throw err;
96+
}
97+
} });
98+
if (method.toLowerCase() === requestMethod) {
99+
handler(req, vResponse);
105100
}
106-
} catch (err) {
107-
throw err;
108-
}
109-
},
110-
});
111-
if (method.toLowerCase() === requestMethod) {
112-
handler(req, vResponse);
113-
} else {
114-
vResponse.sendStatus(405, "Cannot " + method + " " + req.url);
115-
}
101+
else {
102+
vResponse.sendStatus(405, "Cannot " + method + " " + req.url);
103+
}
104+
};
105+
return responseCb;
116106
};
117-
return responseCb;
118-
};
119107
});
120108
exports["default"] = Validate;

index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ interface IValidatorProps {
6464

6565
/** Specify callbacks for different methods made to an endpoint */
6666
type ValidateType = (handlers: IValidatorProps) => Function;
67-
interface IValidate extends IValidatorProps, ValidateType {}
67+
interface IValidate extends IValidator, ValidateType {}
6868
const RequestMethods = [
6969
"get",
7070
"post",

0 commit comments

Comments
 (0)