All files / proxy/utils request.ts

100% Statements 26/26
100% Branches 6/6
100% Functions 5/5
100% Lines 20/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38  7x   13x   7x 11x 11x     7x 13x   7x 21x 21x 18x     3x       58x   58x   58x 129x 129x 37x   37x     21x    
import { CloudFrontRequest } from 'aws-lambda'
import { Region } from '../model'
 
export const getApiKey = (request: CloudFrontRequest): string | undefined => getQueryParameter(request, 'apiKey')
 
export const getVersion = (request: CloudFrontRequest): string => {
  const version = getQueryParameter(request, 'version')
  return version === undefined ? '3' : version
}
 
export const getLoaderVersion = (request: CloudFrontRequest): string | undefined =>
  getQueryParameter(request, 'loaderVersion')
 
export const getRegion = (request: CloudFrontRequest): Region => {
  const value = getQueryParameter(request, 'region')
  if (!value || !(value in Region)) {
    return Region.us
  }
 
  return value as Region
}
 
function getQueryParameter(request: CloudFrontRequest, key: string): string | undefined {
  const params = request.querystring.split('&')
 
  console.debug(`Attempting to extract ${key} from ${params}. Query string: ${request.querystring}`)
 
  for (let i = 0; i < params.length; i++) {
    const kv = params[i].split('=')
    if (kv[0] === key) {
      console.debug(`Found ${key} in ${params}: ${kv[1]}`)
 
      return kv[1]
    }
  }
  return undefined
}