frontController.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. var path = require('path');
  2. var express = require('express');
  3. var serverSettings = (process.env.IS_TEST) ? require('../../../test/fixtures/settings.json') : require('../../../server_config/settings.json');
  4. var packageJson = require('../../../package.json');
  5. var FrontController = function(app) {
  6. 'use strict';
  7. var cacheDuration = 365 * 24 * 60 * 60 * 1000; // One year
  8. var assetsPath = (app.get('env') === 'development') ? '../../../front/src' : '../../../front/build';
  9. // Routes templating
  10. var routes = ['/', '/about', '/result/:runId', '/result/:runId/screenshot', '/result/:runId/rule/:policy', '/queue/:runId'];
  11. routes.forEach(function(route) {
  12. app.get(route, function(req, res) {
  13. res.setHeader('Cache-Control', 'public, max-age=20');
  14. res.render(path.join(__dirname, assetsPath, 'main.html'), {
  15. version: 'v' + packageJson.version,
  16. baseUrl: app.locals.baseUrl || '/',
  17. googleAnalyticsId: serverSettings.googleAnalyticsId,
  18. sponsoring: serverSettings.sponsoring || {}
  19. });
  20. });
  21. });
  22. // Views templating
  23. app.get('/views/:viewName', function(req, res) {
  24. res.setHeader('Cache-Control', 'public, max-age=' + cacheDuration);
  25. res.render(path.join(__dirname, assetsPath, 'views/' + req.params.viewName), {
  26. baseUrl: app.locals.baseUrl || '/',
  27. sponsoring: serverSettings.sponsoring || {}
  28. });
  29. });
  30. // Static assets
  31. app.use('/css', express.static(path.join(__dirname, assetsPath, 'css'), { maxAge: cacheDuration }));
  32. app.use('/fonts', express.static(path.join(__dirname, assetsPath, 'fonts'), { maxAge: cacheDuration }));
  33. app.use('/img', express.static(path.join(__dirname, assetsPath, 'img'), { maxAge: cacheDuration }));
  34. app.use('/js', express.static(path.join(__dirname, assetsPath, 'js'), { maxAge: cacheDuration }));
  35. app.use('/node_modules', express.static(path.join(__dirname, '../../../node_modules'), { maxAge: cacheDuration }));
  36. };
  37. module.exports = FrontController;