-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
120 lines (97 loc) · 3.51 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var bodyParser = require('body-parser');
var swaggerTools = require('swagger-tools');
var session = require('express-session');
var jsyaml = require('js-yaml');
var fs = require('fs');
var helmet = require('helmet');
var APIError = require('./models/Error');
var HttpUtil = require('./util/HttpUtil.js');
var AuthUtil = require('./util/AuthUtil.js');
global.passport = require('passport');
global.passport.serializeUser(function (user, done) {
done(null, user);
});
global.passport.deserializeUser(function (user, done) {
done(null, user);
});
module.exports.init = function (cb) {
var app = express();
// view engine setup
app.use(helmet());
//jade stuff
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(session({
secret : 'keyboard cat',
resave : true,
saveUninitialized: true
}));
app.use(global.passport.initialize());
app.use(global.passport.session());
var translator = require("./routes/translator");
app.use(translator);
//DEMO UI
app.get('/demo', function(req, res, next) {
res.render('index', { title: 'Demo' });
});
app.get('/profile', AuthUtil.isAuthenticated, function (req, res, next) {
res.render('profile', {title: 'Profile', user: req.user});
});
app.get('/dashboard', AuthUtil.isAuthenticated, function (req, res, next) {
res.render('dashboard', {title: 'Dashboard', user: req.user});
});
app.get('/search', AuthUtil.isAuthenticated, function (req, res, next) {
res.render('search', {title: 'User search', user: req.user});
});
/**
* swagger configuration
*/
{
// swaggerRouter configuration
var options = {
swaggerUi : '/swagger.json',
controllers: './controllers/swagger',
useStubs : process.env.NODE_ENV === 'development' // Conditionally turn on stubs (mock mode)
};
// The Swagger document (require it, build it programmatically, fetch it from a URL, ...)
var spec = fs.readFileSync('./api/swagger.yaml', 'utf8');
var swaggerDoc = jsyaml.safeLoad(spec);
// Initialize the Swagger middleware
swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) {
// Interpret Swagger resources and attach metadata to request - must be first in swagger-tools middleware
// chain
app.use(middleware.swaggerMetadata());
// Validate Swagger requests
app.use(middleware.swaggerValidator());
// Route validated requests to appropriate controller
app.use(middleware.swaggerRouter(options));
// Serve the Swagger documents and Swagger UI
app.use(middleware.swaggerUi());
// catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error('Not Found');
err.code = 404;
next(err);
});
// error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
err = new APIError(err.code, err.message, '');
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
HttpUtil.sendResponse(res, err.code, err, req.accepts()[0], 'response');
});
cb(app);
});
}
};