ContainerHQ/arkis-api

View on GitHub
app/middlewares/error_handler.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';

let Serialize = require('../support').Serialize;

const INTERNAL_SERVER_ERROR = {
  name: 'internal_server_error',
  message: `There was a server error while processing your request.
  Try again later, or contact support.`
};

const HTTP_CODES = {
  'SequelizeValidationError':  400,
  'PaginationError':           400,
  'AlreadyUpgradedError':      409,
  'DeletionError':             409,
  'NotMasterError':            403,
  'MachineCredentialsError':   401,
  'MachineNotFoundError':      404,
  'StateError':                422,
  'MachineUnprocessableError': 422,
  'AgentUnreachableError':     422,
  'AgentLockedError':          409
};

module.exports = function(err, req, res, next) {
  let statusCode = HTTP_CODES[err.name] || 500,
      body;

  if (statusCode === 500) {
    console.error(err);

    body = INTERNAL_SERVER_ERROR;
  } else {
    body = Serialize.error(err);
  }
  res.status(statusCode).json(body);
  next();
};