Advertisement
Guest User

1. Request Validator

a guest
Feb 19th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. function validateRequest(obj) {
  2. const keyArr = ['method', 'uri', 'version', 'message'];
  3. const printArr = ['Method', 'URI', 'Version', 'Message']
  4. const methodArr = ['GET', 'POST', 'DELETE', 'CONNECT'];
  5. const uriRegex = /^([\w.]+)$/gm;
  6. const versionArr = ['HTTP/0.9', 'HTTP/1.0', 'HTTP/1.1', 'HTTP/2.0'];
  7. const messageRegex = /^([^<>\\&'"]+)$/gm;
  8. let funcArr = [checkMethod, checkUri, checkVersion, checkMessage];
  9. let counter = 0;
  10. let inputKeys = Object.keys(obj);
  11.  
  12. for (let i = 0; i < keyArr.length; i++) {
  13. let keyValPairCheck = funcArr[i](inputKeys[i], obj[inputKeys[i]]);
  14.  
  15. if (inputKeys.indexOf(keyArr[i]) === -1 || !keyValPairCheck) {
  16. throw new Error(`Invalid request header: Invalid ${printArr[i]}`);
  17. } else {
  18. counter++
  19. }
  20. }
  21.  
  22. if (counter === 4) {
  23. return obj;
  24. }
  25.  
  26. function checkMethod(key, val) {
  27. return keyArr.indexOf(key) != -1 && methodArr.indexOf(val) != -1;
  28. };
  29. function checkUri(key, val) {
  30. return keyArr.indexOf(key) != -1 && (uriRegex.test(val) || val === '*');
  31. };
  32. function checkVersion(key, val) {
  33. return keyArr.indexOf(key) != -1 && versionArr.indexOf(val) != -1;
  34. };
  35. function checkMessage(key, val) {
  36. return keyArr.indexOf(key) != -1 && (messageRegex.test(val) || val === '');
  37. };
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement