lib/serveAPI.js

/**
 * proxy to async function call
 * @module serveAPI
 */
const path = require('path')
const url = require('url')

/**
 * async function to call local API service
 *
 * @param {object} req - HTTP request
 * @param {object} res - HTTP response
 * @param {*} [callback=() => { }]
 */
module.exports = async(req, res, callback = () => { }) => {
  const requestURL = url.parse(req.url)
  try {
    (async() => {
      try {
        const apiCall = await require(path.join(__dirname, requestURL.pathname + '.js'))(requestURL.query)
        res.setHeader('Content-type', 'text/json')
        res.end(JSON.stringify(apiCall))
      } catch (err) {
        // TODO: [] return 404 file to user
        console.log(err)
        res.statusCode = 404
        res.end(`<h1>Cannot find page ${req.url}</h1>`)
      }
    })()
    callback()
  } catch (err) { console.log(err) }
}