refactor: refactor routes

This commit is contained in:
Khaled Garbaya
2017-10-23 14:40:20 +02:00
committed by Benedikt Rötsch
parent 8640483af3
commit 1e94188333
7 changed files with 61 additions and 70 deletions

View File

@@ -1,12 +1,10 @@
const express = require('express')
const { getLandingPage } = require('../services/contentful')
const { catchErrors } = require('../handlers/errorHandlers')
const router = express.Router()
/* GET the about page. */
router.get('/', catchErrors(async function (req, res, next) {
const landingPage = await getLandingPage('about', res.locals.currentLocale.code, res.locals.currentApi.id)
exports.getAbout = async (req, res, next) => {
const landingPage = await getLandingPage('about',
res.locals.currentLocale.code,
res.locals.currentApi.id
)
res.render('landingPage', { title: 'About', landingPage })
}))
}
module.exports = router

View File

@@ -1,10 +1,5 @@
const express = require('express')
const { catchErrors } = require('../handlers/errorHandlers')
const router = express.Router()
/* GET category listing. */
router.get('/', catchErrors(async function (req, res, next) {
exports.getCategories = async (req, res, next) => {
res.render('categories', { title: 'Categories' })
}))
}
module.exports = router

View File

@@ -1,20 +1,28 @@
const express = require('express')
const {getCourses, getCourse, getCategories, getCoursesByCategory} = require('./../services/contentful')
const { catchErrors } = require('../handlers/errorHandlers')
const router = express.Router()
/* GET courses listing. */
router.get('/', catchErrors(async function (req, res, next) {
exports.getCourses = async (req, res, next) => {
// we get all the entries with the content type `course`
let courses = []
let categories = []
courses = await getCourses(res.locals.currentLocale.code, res.locals.currentApi.id)
categories = await getCategories(res.locals.currentLocale.code, res.locals.currentApi.id)
res.render('courses', { title: `All Courses (${courses.length})`, categories, courses })
}))
}
/* GET courses listing by category. */
router.get('/categories/:category', catchErrors(async function (req, res, next) {
exports.getCourse = async (req, res, next) => {
let course = await getCourse(req.params.slug, res.locals.currentLocale.code, res.locals.currentApi.id)
const lessons = course.fields.lessons
const lessonIndex = lessons.findIndex((lesson) => lesson.fields.slug === req.params.lslug)
const lesson = lessons[lessonIndex]
const cookie = req.cookies.visitedLessons
let visitedLessons = cookie || []
visitedLessons.push(course.sys.id)
visitedLessons = [...new Set(visitedLessons)]
res.cookie('visitedLessons', visitedLessons, { maxAge: 900000, httpOnly: true })
res.render('course', {title: course.fields.title, course, lesson, lessons, lessonIndex, visitedLessons})
}
exports.getCoursesByCategory = async (req, res, next) => {
// we get all the entries with the content type `course` filtered by a category
let courses = []
let categories = []
@@ -27,26 +35,10 @@ router.get('/categories/:category', catchErrors(async function (req, res, next)
console.log('Error ', e)
}
res.render('courses', { title: `${activeCategory.fields.title} (${courses.length})`, categories, courses })
}))
/* GET course detail. */
const courseRoute = catchErrors(async function (req, res, next) {
let course = await getCourse(req.params.slug, res.locals.currentLocale.code, res.locals.currentApi.id)
const lessons = course.fields.lessons
const lessonIndex = lessons.findIndex((lesson) => lesson.fields.slug === req.params.lslug)
const lesson = lessons[lessonIndex]
const cookie = req.cookies.visitedLessons
let visitedLessons = cookie || []
visitedLessons.push(course.sys.id)
visitedLessons = [...new Set(visitedLessons)]
res.cookie('visitedLessons', visitedLessons, { maxAge: 900000, httpOnly: true })
res.render('course', {title: course.fields.title, course, lesson, lessons, lessonIndex, visitedLessons})
})
router.get('/:slug', courseRoute)
router.get('/:slug/lessons', courseRoute)
}
/* GET course lesson detail. */
router.get('/:cslug/lessons/:lslug', catchErrors(async function (req, res, next) {
exports.getLesson = async (req, res, next) => {
let course = await getCourse(req.params.cslug, res.locals.currentLocale.code, res.locals.currentApi.id)
const lessons = course.fields.lessons
const lessonIndex = lessons.findIndex((lesson) => lesson.fields.slug === req.params.lslug)
@@ -65,6 +57,5 @@ router.get('/:cslug/lessons/:lslug', catchErrors(async function (req, res, next)
nextLesson,
visitedLessons
})
}))
}
module.exports = router

View File

@@ -1,6 +1,11 @@
const express = require('express')
const { getLandingPage } = require('../services/contentful')
const { catchErrors } = require('../handlers/errorHandlers')
const { getCourses, getCourse, getLesson, getCourseByCategory } = require('./courses')
const { getSettings, postSettings } = require('./settings')
const { getCategories } = require('./categories')
const { getSitemap } = require('./sitemap')
const { getAbout } = require('./about')
const router = express.Router()
/* GET the home landing page. */
@@ -16,4 +21,24 @@ router.get('/', catchErrors(async function (req, res, next) {
})
}))
/* Courses Routes */
router.get('/courses', catchErrors(getCourses))
router.get('/courses/categories/:category', catchErrors(getCourseByCategory))
router.get('/courses/:slug', catchErrors(getCourse))
router.get('/courses/:slug/lessons', catchErrors(getCourse))
router.get('/courses/:cslug/lessons/:lslug', catchErrors(getLesson))
/* Settings Routes */
router.get('/settings', catchErrors(getSettings))
router.post('/settings', catchErrors(postSettings))
/* Categories Route */
router.get('/categories', catchErrors(getCategories))
/* Sitemap Route */
router.get('/sitemap', catchErrors(getSitemap))
/* About Route */
router.get('/about', catchErrors(getAbout))
module.exports = router

View File

@@ -1,8 +1,5 @@
const express = require('express')
const { createClient } = require('contentful')
const { getSpace } = require('./../services/contentful')
const { catchErrors } = require('../handlers/errorHandlers')
const router = express.Router()
async function renderSettings (res, opts) {
// Get connectred space to display the space name on top of the settings
@@ -24,15 +21,15 @@ async function renderSettings (res, opts) {
}
/* GET settings page. */
router.get('/', catchErrors(async function (req, res, next) {
exports.getSettings = async (req, res, next) => {
const { settings } = res.locals
await renderSettings(res, {
settings
})
}))
}
/* POST settings page. */
router.post('/', catchErrors(async function (req, res, next) {
exports.postSettings = async (req, res, next) => {
const errorList = []
const { space, cda, cpa, editorialFeatures } = req.body
const settings = {
@@ -138,6 +135,5 @@ router.post('/', catchErrors(async function (req, res, next) {
hasErrors: errorList.length > 0,
success: errorList.length === 0
})
}))
}
module.exports = router

View File

@@ -1,9 +1,5 @@
const express = require('express')
const router = express.Router()
/* GET sitemap page. */
router.get('/', function (req, res, next) {
exports.getSitemap = async (req, res, next) => {
res.render('sitemap', { title: 'Sitemap' })
})
}
module.exports = router