Source: route-leaderboard/index.js

/**
 * @module  leaderboard-route
 * @desc    The leaderboard-api leaderboard route module.
 * @version 1.0.0
 * @author  Essam A. El-Sherif
 */

/* Import package dependencies */
import { Router } from 'express';

/* Import local dependencies */
import {
	getActAllMiddleware,
	getActTopMiddleware,
	getActUsrMiddleware,
	getAllMiddleware,
	getTopMiddleware,
	getUsrMiddleware,
} from './controller.js';

/**
 * @const {object} router - Leaderboard router object.
 * @static
 */
const router = Router();

/*
 * =========================================================================================
 * Endpoint                                   Method  Authorization  Router-level middleware
 * =========================================================================================
 * .../leaderboard/:activity                  GET     Yes            getActAllMiddleware
 * .../leaderboard/:activity/top              GET     Yes            getActTopMiddleware
 * .../leaderboard/:activity/top/:count       GET     Yes            getActTopMiddleware
 * .../leaderboard/:activity/user/:username   GET     Yes            getActUsrMiddleware
 * .../leaderboard/global                     GET     Yes            getAllMiddleware
 * .../leaderboard/global/top                 GET     Yes            getTopMiddleware
 * .../leaderboard/global/top/:count          GET     Yes            getTopMiddleware
 * .../leaderboard/global/user/:username      GET     Yes            getUsrMiddleware
 * =========================================================================================
 */

router.get('/global/user/:username', getUsrMiddleware );
router.get('/global/top/:count',     getTopMiddleware );
router.get('/global/top',            getTopMiddleware );
router.get('/global',                getAllMiddleware );

router.get('/:activity/user/:username', getActUsrMiddleware );
router.get('/:activity/top/:count',     getActTopMiddleware );
router.get('/:activity/top',            getActTopMiddleware );
router.get('/:activity',                getActAllMiddleware );

router.use((req, res) => {
	if(req.method.toUpperCase() !== 'GET'){
		res.status(404).send(`Retrieval Error: invalid request method '${req.method}'`);
	}
	else{
		res.status(404).send(`Retrieval Error: invalid endpoint`);
	}
})

export { router };