all files / lib/ecstatic/ status-handlers.js

60.98% Statements 25/41
33.33% Branches 8/24
57.14% Functions 4/7
60.98% Lines 25/41
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 98 99 100 101 102 103 104 10535×     35×       35×                           35×                       35× 13× 13×             35×                 35×                                           35×                                
var he = require('he');
 
// not modified
exports['304'] = function (res, next) {
  res.statusCode = 304;
  res.end();
};
 
// access denied
exports['403'] = function (res, next) {
  res.statusCode = 403;
  if (typeof next === "function") {
    next();
  }
  else {
    if (res.writable) {
      res.setHeader('content-type', 'text/plain');
      res.end('ACCESS DENIED');
    }
  }
};
 
// disallowed method
exports['405'] = function (res, next, opts) {
  res.statusCode = 405;
  if (typeof next === "function") {
    next();
  }
  else {
    res.setHeader('allow', (opts && opts.allow) || 'GET, HEAD');
    res.end();
  }
};
 
// not found
exports['404'] = function (res, next) {
  res.statusCode = 404;
  if (typeof next === "function") {
    next();
  }
  else {
    Eif (res.writable) {
      res.setHeader('content-type', 'text/plain');
      res.end('File not found. :(');
    }
  }
};
 
exports['416'] = function (res, next) {
  res.statusCode = 416;
  Iif (typeof next === "function") {
    next();
  }
  else {
    Eif (res.writable) {
      res.setHeader('content-type', 'text/plain');
      res.end('Requested range not satisfiable');
    }
  }
};
 
// flagrant error
exports['500'] = function (res, next, opts) {
  res.statusCode = 500;
  res.setHeader('content-type', 'text/html');
  var error = String(opts.error.stack || opts.error || "No specified error"),
      html = [
    '<!doctype html>',
    '<html>',
    '  <head>',
    '    <meta charset="utf-8">',
    '    <title>500 Internal Server Error</title>',
    '  </head>',
    '  <body>',
    '    <p>',
    '      ' + he.encode(error),
    '    </p>',
    '  </body>',
    '</html>'
  ].join('\n') + '\n';
  res.end(html);
};
 
// bad request
exports['400'] = function (res, next, opts) {
  res.statusCode = 400;
  res.setHeader('content-type', 'text/html');
  var error = opts && opts.error ? String(opts.error) : 'Malformed request.',
      html = [
    '<!doctype html>',
    '<html>',
    '  <head>',
    '    <meta charset="utf-8">',
    '    <title>400 Bad Request</title>',
    '  </head>',
    '  <body>',
    '    <p>',
    '      ' + he.encode(error),
    '    </p>',
    '  </body>',
    '</html>'
  ].join('\n') + '\n';
  res.end(html);
};