All files routes.js

100% Statements 29/29
100% Branches 18/18
100% Functions 4/4
100% Lines 29/29

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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97                                1x 1x         8x   8x 1x       1x     7x     1x             1x     6x     1x             1x       5x       4x 2x 2x 1x         2x       1x 1x         2x 1x 1x 1x     1x 1x 1x         8x 2x  
import config from "./config.js"
import {
  Controller
} from "./controller.js"
import {
  logger
} from "./util.js"
const {
  location,
  pages: {
    homeHTML,
    controllerHTML
  },
  constants: {
    CONTENT_TYPE
  }
} = config
const controller = new Controller()
async function routes(request, response) {
  const {
    method,
    url
  } = request
 
  if (method === 'GET' && url === '/') {
    response.writeHead(302, {
      'Location': location.home
    })
 
    return response.end()
  }
 
  if (method === 'GET' && url === '/home') {
    const {
      stream
    } = await controller.getFileStream(homeHTML)
 
    // padrão do response é text/html
    // response.writeHead(200, {
    //   'Content-Type': 'text/html'
    // })
 
    return stream.pipe(response)
  }
 
  if (method === 'GET' && url === '/controller') {
    const {
      stream
    } = await controller.getFileStream(controllerHTML)
 
    // padrão do response é text/html
    // response.writeHead(200, {
    //   'Content-Type': 'text/html'
    // })
 
    return stream.pipe(response)
  }
 
  //files
  if (method === 'GET') {
    const {
      stream,
      type
    } = await controller.getFileStream(url)
    const contentType = CONTENT_TYPE[type]
    if (contentType) {
      response.writeHead(200, {
        'Content-Type': contentType
      })
 
    }
    return stream.pipe(response)
  }
 
 
  response.writeHead(404)
  return response.end()
 
}
 
function handleError(error, response) {
  if (error.message.includes('ENOENT')) {
    logger.warn(`asset not found ${error.stack}`)
    response.writeHead(404)
    return response.end()
  }
 
  logger.error(`caught error on API ${error.stack}`)
  response.writeHead(500)
  return response.end()
}
 
export function handler(request, response) {
 
  return routes(request, response)
    .catch(error => handleError(error, response))
}