tolulope-od/banka

View on GitHub
index.js

Summary

Maintainability
A
0 mins
Test Coverage
import '@babel/polyfill';
import express from 'express';
import bodyParser from 'body-parser';
import cors from 'cors';
import swaggerUi from 'swagger-ui-express';
import logger from 'morgan';
import Debug from 'debug';

import swaggerDoc from './swagger.json';

// Import route
import routes from './server/routes';

const debug = Debug('dev');

// Set up the app with express
const app = express();
const PORT = process.env.PORT || 5000;
const API_PREFIX = '/api/v1';

// Set up app to use Cross-Origin Resource Sharing
app.use(cors());

/**
 * @route /test
 * @description use to test server response
 */
app.get('/', (req, res) => res.status(200).json({ message: 'BANKA APP API RESPONSE SUCCESSFUL' }));

// logging middleware
app.use(logger('dev'));

// Body parser middleware
app.use(bodyParser({ extended: false }));
app.use(bodyParser.json());

// Use the routes for the apps routing logic
app.use(`${API_PREFIX}`, routes);

app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDoc));

// Handle errors
app.use((err, req, res, next) => {
  debug(err.stack);
  res.status(500).json({ error: "Something broke, don't worry, it's not you, it's us" });
  next();
});

app.get('*', (req, res) => {
  res.status(404).send({
    status: 404,
    error: 'Not found'
  });
});

app.listen(PORT, () => debug(`Server Running on Port ${PORT}`));

export default app;