###
Module dependencies.
###
fs = require 'fs'

ERROR_MESSAGES =
  401: 'Forbidden'
  403: 'Unauthorized'

httpErrorResponse = (res, statusCode, customErrorPath) ->
  throw new Error '"res" parameter is required' if not res?
  throw new Error '"statusCode" parameter is required' if not statusCode?

  errorPath = customErrorPath or "views/#{statusCode}.html"

  return (body, cookie) ->
    throw new Error '"body" parameter is required' if not body?
    throw new Error '"cookie" parameter is required' if not cookie?

    fs.readFile errorPath, (err, page) ->

      errorMessage = ERROR_MESSAGES[statusCode]
      logMessage = "#{errorMessage} access for auth cookie #{cookie}"

      # Sets fallback message if no html was found
      if err
        page = "Error #{statusCode}: #{logMessage}"

      console.warn "#{errorMessage} access for auth cookie", cookie, '\n', body
      res.statusCode = statusCode
      res.write page
      res.end()

module.exports = httpErrorResponse