Home Reference Source

src/routes/index.js

import Promise from 'bluebird';
import { map } from 'lodash';

import userRoutes from './user.routes';
import clientRoutes from './client.routes';
import projectRoutes from './project.routes';
import authRoutes from './auth.routes';
import exportRoutes from './export.routes';
import miscRoutes from './misc.routes';

/**
 * The routers list, which list each routes plugin
 * with its prefix
 */
const ROUTERS = [{
    register: userRoutes,
    prefix: '/api/users'
  }, {
    register: clientRoutes,
    prefix: '/api/clients'
  }, {
    register: projectRoutes,
    prefix: '/api/projects'
  }, {
    register: authRoutes,
    prefix: '/api/auth'
  }, {
    register: exportRoutes,
    prefix: '/api/export'
  }, {
    register: miscRoutes,
    prefix: '/api'
}];

/**
 * This function registers the server's routes
 * @param { Object } server the Hapi server
 * @return { Promise } a prmise that resolves the
 * server
 */
export default server =>
  Promise.all(map(ROUTERS, ({ register, prefix }) =>
    new Promise((resolve, reject) =>
      server.register({ register }, { routes: { prefix } }, (err) => {
        if (err) {
          return reject(err);
        }
        return resolve(true);
      }))))
  .then(() =>
    new Promise(resolve => resolve(server)));