| 
									
										
										
										
											2016-06-17 12:35:10 -07:00
										 |  |  | import supportedLanguages from '../../common/utils/supported-languages'; | 
					
						
							|  |  |  | import passThroughs from '../utils/lang-passthrough-urls'; | 
					
						
							| 
									
										
										
										
											2016-07-16 10:40:14 -07:00
										 |  |  | 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) { | 
					
						
							| 
									
										
										
										
											2016-07-16 10:40:14 -07:00
										 |  |  |     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(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-16 10:40:14 -07:00
										 |  |  |     if (!supportedLanguages[langCode]) { | 
					
						
							|  |  |  |       // language aware redirect
 | 
					
						
							|  |  |  |       return res.redirect(url); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (type === 'html') { | 
					
						
							| 
									
										
										
										
											2018-01-12 14:16:33 -08:00
										 |  |  |       req.flash('danger', `We couldn't find path ${ path }`); | 
					
						
							| 
									
										
										
										
											2016-07-14 17:32:44 -07:00
										 |  |  |       return res.render('404', { title: '404'}); | 
					
						
							| 
									
										
										
										
											2016-06-17 12:35:10 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-16 10:40:14 -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
										 |  |  |   }); | 
					
						
							|  |  |  | } |