Skip to content

Commit

Permalink
refactor: API routes
Browse files Browse the repository at this point in the history
Nest routes under /api
  • Loading branch information
marcobiedermann committed Jul 7, 2020
1 parent 3d8a66c commit 1015b36
Show file tree
Hide file tree
Showing 17 changed files with 72 additions and 67 deletions.
2 changes: 1 addition & 1 deletion src/routes/api-docs/index.ts
Expand Up @@ -3,6 +3,6 @@ import swaggerUi from 'swagger-ui-express';

const router = Router();

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

export default router;
@@ -1,11 +1,11 @@
import { Router } from 'express';
import passport from '../../../passport';
import passport from '../../../../passport';

const router = Router();

router.route('/github').get(passport.authenticate('github'));
router.route('/').get(passport.authenticate('github'));

router.route('/github/callback').get(
router.route('/callback').get(
passport.authenticate('github', {
successRedirect: '/',
failureRedirect: '/login',
Expand Down
@@ -1,15 +1,15 @@
import { Router } from 'express';
import passport from '../../../passport';
import passport from '../../../../passport';

const router = Router();

router.route('/google').get(
router.route('/').get(
passport.authenticate('google', {
scope: ['email', 'profile'],
}),
);

router.route('/google/callback').get(
router.route('/callback').get(
passport.authenticate('google', {
successRedirect: '/',
failureRedirect: '/login',
Expand Down
7 changes: 3 additions & 4 deletions src/routes/auth/index.ts → src/routes/api/auth/index.ts
Expand Up @@ -4,10 +4,9 @@ import googleRoutes from './google';
import twitterRoutes from './twitter';

const router = Router();
const baseRoute = '/auth';

router.use(baseRoute, githubRoutes);
router.use(baseRoute, googleRoutes);
router.use(baseRoute, twitterRoutes);
router.use('/github', githubRoutes);
router.use('/google', googleRoutes);
router.use('/twitter', twitterRoutes);

export default router;
@@ -1,11 +1,11 @@
import { Router } from 'express';
import passport from '../../../passport';
import passport from '../../../../passport';

const router = Router();

router.route('/twitter').get(passport.authenticate('twitter'));
router.route('/').get(passport.authenticate('twitter'));

router.route('/twitter/callback').get(
router.route('/callback').get(
passport.authenticate('twitter', {
successRedirect: '/',
failureRedirect: '/login',
Expand Down
@@ -1,15 +1,15 @@
import { Router } from 'express';
import passport from '../../../passport';
import passport from '../../../../passport';

const router = Router();

router.route('/github').get(
router.route('/').get(
passport.authorize('github', {
scope: ['email', 'public_profile'],
}),
);

router.route('/github/callback').get(
router.route('/callback').get(
passport.authorize('github', {
successRedirect: '/profile',
failureRedirect: '/',
Expand Down
@@ -1,15 +1,15 @@
import { Router } from 'express';
import passport from '../../../passport';
import passport from '../../../../passport';

const router = Router();

router.route('/google').get(
router.route('/').get(
passport.authorize('google', {
scope: ['profile'],
}),
);

router.route('/google/callback').get(
router.route('/callback').get(
passport.authorize('google', {
successRedirect: '/profile',
failureRedirect: '/',
Expand Down
Expand Up @@ -4,10 +4,9 @@ import googleRoutes from './google';
import twitterRoutes from './twitter';

const router = Router();
const baseRoute = '/connect';

router.use(baseRoute, githubRoutes);
router.use(baseRoute, googleRoutes);
router.use(baseRoute, twitterRoutes);
router.use('/github', githubRoutes);
router.use('/google', googleRoutes);
router.use('/twitter', twitterRoutes);

export default router;
@@ -1,15 +1,15 @@
import { Router } from 'express';
import passport from '../../../passport';
import passport from '../../../../passport';

const router = Router();

router.route('/twitter').get(
router.route('/').get(
passport.authorize('twitter', {
scope: ['email', 'public_profile'],
}),
);

router.route('/twitter/callback').get(
router.route('/callback').get(
passport.authorize('twitter', {
successRedirect: '/profile',
failureRedirect: '/',
Expand Down
18 changes: 18 additions & 0 deletions src/routes/api/index.ts
@@ -0,0 +1,18 @@
import { Router } from 'express';
import authRoutes from './auth';
import connectRoutes from './connect';
import meRoutes from './me';
import organizationRoutes from './organization';
import teamRoutes from './team';
import userRoutes from './user';

const router = Router();

router.use('/auth', authRoutes);
router.use('/connect', connectRoutes);
router.use('/me', meRoutes);
router.use('/organizations', organizationRoutes);
router.use('/teams', teamRoutes);
router.use('/users', userRoutes);

export default router;
2 changes: 1 addition & 1 deletion src/routes/me/index.ts → src/routes/api/me/index.ts
Expand Up @@ -12,6 +12,6 @@ async function getMe(request: Request, response: Response) {
});
}

router.route('/me').get(passport.authenticate('basic'), asyncHandler(getMe));
router.route('/').get(passport.authenticate('basic'), asyncHandler(getMe));

export default router;
@@ -1,10 +1,10 @@
import { Request, Response, Router } from 'express';
import asyncHandler from 'express-async-handler';
import createError from 'http-errors';
import { validateCreateOrganization } from '../middlewares/validation/organization';
import * as organizationService from '../services/organization';
import * as teamService from '../services/team';
import * as userService from '../services/user';
import { validateCreateOrganization } from '../../../middlewares/validation/organization';
import * as organizationService from '../../../services/organization';
import * as teamService from '../../../services/team';
import * as userService from '../../../services/user';

const router = Router();

Expand Down Expand Up @@ -89,18 +89,18 @@ async function getUsersByOrganization(request: Request, response: Response): Pro
}

router
.route('/organizations')
.route('/')
.get(asyncHandler(getOrganizations))
.post(validateCreateOrganization, asyncHandler(createOrganization));

router
.route('/organizations/:organizationId')
.route('/:organizationId')
.delete(asyncHandler(deleteOrganization))
.get(asyncHandler(getOrganization))
.patch(asyncHandler(updateOrganization));

router.route('/organizations/:organizationId/teams').get(asyncHandler(getTeamsByOrganization));
router.route('/:organizationId/teams').get(asyncHandler(getTeamsByOrganization));

router.route('/organizations/:organizationId/users').get(asyncHandler(getUsersByOrganization));
router.route('/:organizationId/users').get(asyncHandler(getUsersByOrganization));

export default router;
10 changes: 5 additions & 5 deletions src/routes/team.ts → src/routes/api/team/index.ts
@@ -1,8 +1,8 @@
import { Request, Response, Router } from 'express';
import asyncHandler from 'express-async-handler';
import createError from 'http-errors';
import * as teamService from '../services/team';
import * as userService from '../services/user';
import * as teamService from '../../../services/team';
import * as userService from '../../../services/user';

const router = Router();

Expand Down Expand Up @@ -72,14 +72,14 @@ async function getUsersByTeam(request: Request, response: Response): Promise<voi
});
}

router.route('/teams').get(asyncHandler(getTeams)).post(asyncHandler(createTeam));
router.route('/').get(asyncHandler(getTeams)).post(asyncHandler(createTeam));

router
.route('/teams/:teamId')
.route('/:teamId')
.delete(asyncHandler(deleteTeam))
.get(asyncHandler(getTeam))
.patch(updateTeam);

router.route('/teams/:teamId/users').get(asyncHandler(getUsersByTeam));
router.route('/:teamId/users').get(asyncHandler(getUsersByTeam));

export default router;
14 changes: 7 additions & 7 deletions src/routes/user.ts → src/routes/api/user/index.ts
@@ -1,9 +1,9 @@
import { Request, Response, Router } from 'express';
import asyncHandler from 'express-async-handler';
import createError from 'http-errors';
import * as organizationService from '../services/organization';
import * as teamService from '../services/team';
import * as userService from '../services/user';
import * as organizationService from '../../../services/organization';
import * as teamService from '../../../services/team';
import * as userService from '../../../services/user';

const router = Router();

Expand Down Expand Up @@ -84,16 +84,16 @@ async function getTeamsByUser(request: Request, response: Response): Promise<voi
});
}

router.route('/users').get(asyncHandler(getUsers)).post(asyncHandler(createUser));
router.route('/').get(asyncHandler(getUsers)).post(asyncHandler(createUser));

router
.route('/users/:userId')
.route('/:userId')
.delete(asyncHandler(deleteUser))
.get(asyncHandler(getUser))
.patch(asyncHandler(updateUser));

router.route('/users/:userId/organizations').get(asyncHandler(getOrganizationsByUser));
router.route('/:userId/organizations').get(asyncHandler(getOrganizationsByUser));

router.route('/users/:userId/teams').get(asyncHandler(getTeamsByUser));
router.route('/:userId/teams').get(asyncHandler(getTeamsByUser));

export default router;
2 changes: 1 addition & 1 deletion src/routes/healthcheck/index.ts
Expand Up @@ -3,6 +3,6 @@ import expressHealthcheck from 'express-healthcheck';

const router = Router();

router.use('/healthcheck', expressHealthcheck());
router.use('/', expressHealthcheck());

export default router;
22 changes: 6 additions & 16 deletions src/routes/index.ts
@@ -1,28 +1,18 @@
import { Request, Response, Router } from 'express';
import apiRoutes from './api';
import apiDocs from './api-docs';
import authRoutes from './auth';
import connectRoutes from './connect';
import error404 from './error-404';
import healthcheck from './healthcheck';
import logoutRoutes from './logout';
import meRoutes from './me';
import organizationRoutes from './organization';
import teamRoutes from './team';
import userRoutes from './user';

const router = Router();

router.route('/').get((_request: Request, response: Response) => response.redirect('/api-docs'));

router.use(apiDocs);
router.use(authRoutes);
router.use(connectRoutes);
router.use(healthcheck);
router.use(logoutRoutes);
router.use(meRoutes);
router.use(organizationRoutes);
router.use(teamRoutes);
router.use(userRoutes);
router.use(error404);
router.use('/api-docs', apiDocs);
router.use('/healthcheck', healthcheck);
router.use('/logout', logoutRoutes);
router.use('/api', apiRoutes);
router.use('*', error404);

export default router;
3 changes: 1 addition & 2 deletions src/routes/logout.ts → src/routes/logout/index.ts
@@ -1,9 +1,8 @@
import { Request, Response, Router } from 'express';

const router = Router();
const baseRoute = '/logout';

router.route(baseRoute).get((request: Request, response: Response): void => {
router.route('/').get((request: Request, response: Response): void => {
request.logout();
response.redirect('/');
});
Expand Down

0 comments on commit 1015b36

Please sign in to comment.