Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function validateRequest(obj) {
- const keyArr = ['method', 'uri', 'version', 'message'];
- const printArr = ['Method', 'URI', 'Version', 'Message']
- const methodArr = ['GET', 'POST', 'DELETE', 'CONNECT'];
- const uriRegex = /^([\w.]+)$/gm;
- const versionArr = ['HTTP/0.9', 'HTTP/1.0', 'HTTP/1.1', 'HTTP/2.0'];
- const messageRegex = /^([^<>\\&'"]+)$/gm;
- let funcArr = [checkMethod, checkUri, checkVersion, checkMessage];
- let counter = 0;
- let inputKeys = Object.keys(obj);
- for (let i = 0; i < keyArr.length; i++) {
- let keyValPairCheck = funcArr[i](inputKeys[i], obj[inputKeys[i]]);
- if (inputKeys.indexOf(keyArr[i]) === -1 || !keyValPairCheck) {
- throw new Error(`Invalid request header: Invalid ${printArr[i]}`);
- } else {
- counter++
- }
- }
- if (counter === 4) {
- return obj;
- }
- function checkMethod(key, val) {
- return keyArr.indexOf(key) != -1 && methodArr.indexOf(val) != -1;
- };
- function checkUri(key, val) {
- return keyArr.indexOf(key) != -1 && (uriRegex.test(val) || val === '*');
- };
- function checkVersion(key, val) {
- return keyArr.indexOf(key) != -1 && versionArr.indexOf(val) != -1;
- };
- function checkMessage(key, val) {
- return keyArr.indexOf(key) != -1 && (messageRegex.test(val) || val === '');
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement