Source: server/index.js


import { Express, json, urlencoded } from 'express';
import { consoleReqLogger, fsReqLogger } from '../logging/req.logger';

import Winston from '../logging/app.logger';
import apiRouter from './api';
import express from 'express';

import { redirectPageHandler } from './redirect/redirect.controller';
import { validateSlack } from './authorization/authorization.middleware';

/**
 * Assigns middleware to an express server and returns it.
 * @returns {Express}
 */
function buildServer(): Express {
    const app = express();
    app.use(consoleReqLogger);
    app.use(fsReqLogger);
    app.use(json());
    app.use(urlencoded());
    app.get('/', redirectPageHandler);
    app.use(`/slack/api/v${process.env.API_VERSION_NUMBER || 1}`, validateSlack, apiRouter);
    app.use(errorHandler);

    return app;
}

function errorHandler(err, req, res, next) { //eslint-disable-line no-unused-vars
    Winston.error('Error caught in final error handler.');
    Winston.error(err);
    //err |> prettyJson |> Winston.error;
    return res.status(404).send({
        error: process.env.NODE_ENV !== 'development' ? err.message : 'There was an error processing your request.'
    });
}

export default buildServer;