Advertisement
Guest User

AJAX Request Validator

a guest
Sep 27th, 2016
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function ajaxRequestValidator(arr) {
  2.     let regexHashPattern = /(\d+)([a-zA-Z]{1})/g
  3.     let hashPattern = {
  4.         full: arr.pop(),
  5.         patterns: [],
  6.         matches: null
  7.     }
  8.     while((hashPattern.matches = regexHashPattern.exec(hashPattern.full)) !== null) {
  9.         hashPattern.patterns.push({
  10.             symbol: hashPattern.matches[2],
  11.             count: Number(hashPattern.matches[1])
  12.         })
  13.     }
  14.  
  15.     let methodPattern = /Method: (GET|POST|PUT|DELETE)$/
  16.     let authPattern = /Credentials: (Bearer|Basic) ([a-zA-Z0-9]+)$/
  17.     let contentPattern = /Content: ([a-zA-Z0-9.]+)$/
  18.  
  19.     let request = null
  20.  
  21.     for (let i = 0; i < arr.length; i += 3) {
  22.         arr[i] = arr[i]
  23.         let methodMatches = methodPattern.exec(arr[i])
  24.         let authMatches = authPattern.exec(arr[i + 1])
  25.         let contentMatches = contentPattern.exec(arr[i + 2])
  26.  
  27.         if(methodMatches === null || authMatches === null || contentMatches === null) {
  28.             console.log(`Response-Code:400`)
  29.             continue
  30.         }
  31.  
  32.         request = {
  33.             method: methodMatches[1],
  34.             authType: authMatches[1],
  35.             authContent: authMatches[2]
  36.         }
  37.  
  38.         if(request.method !== 'GET' && request.authType !== 'Bearer') {
  39.             console.log(`Response-Method:${request.method}&Code:401`)
  40.             continue
  41.         }
  42.  
  43.         if(checkAuth(request)) {
  44.             console.log(`Response-Method:${request.method}&Code:200&Header:${request.authContent}`)
  45.         } else {
  46.             console.log(`Response-Method:${request.method}&Code:403`)
  47.         }
  48.     }
  49.     function checkAuth(request) {
  50.         for (let i = 0; i < hashPattern.patterns.length; i++) {
  51.             let patternSymbol = hashPattern.patterns[i].symbol.toLowerCase()
  52.             let patternCount = hashPattern.patterns[i].count
  53.  
  54.             let symbolCount = 0
  55.             for (let j = 0; j < request.authContent.length; j++) {
  56.                 if(patternSymbol === request.authContent[j].toLowerCase()) {
  57.                     symbolCount++
  58.                 }
  59.             }
  60.             if(symbolCount === patternCount) {
  61.                 return true
  62.             }
  63.         }
  64.         return false
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement