Files
freeCodeCamp/server/boot/z-lang-redirect.js

38 lines
1.1 KiB
JavaScript
Raw Normal View History

2016-06-17 12:35:10 -07:00
import supportedLanguages from '../../common/utils/supported-languages';
import passThroughs from '../utils/lang-passthrough-urls';
import accepts from 'accepts';
2016-06-17 12:35:10 -07:00
// import debug from 'debug';
// const log = debug('fcc:controller:lang-redirect');
const toLowerCase = String.prototype.toLowerCase;
export default function redirectLang(app) {
app.all('*', function(req, res, next) {
const accept = accepts(req);
const type = accept.type('html', 'json', 'text');
2016-06-17 12:35:10 -07:00
const { url, path } = req;
const langCode = toLowerCase.call(url.split('/')[1]);
if (passThroughs[langCode]) {
return next();
}
if (!supportedLanguages[langCode]) {
// language aware redirect
return res.redirect(url);
}
if (type === 'html') {
req.flash('danger', `We couldn't find path ${ path }`);
return res.render('404', { title: '404'});
2016-06-17 12:35:10 -07:00
}
if (type === 'json') {
return res.status('404').json({ error: 'path not found' });
}
res.setHeader('Content-Type', 'text/plain');
return res.send('404 path not found');
2016-06-17 12:35:10 -07:00
});
}