-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
145 lines (120 loc) · 3.83 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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
// var acl = require('acl');
var swaggerJSDoc = require('swagger-jsdoc');
var index = require('./routes/index');
var users = require('./routes/users');
// var swagger = require('./routes/swagger');
var app = express();
// 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(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//setup cors to accept requests from everywhere
var cors = require('cors');
app.use(cors());
var spec = swaggerJSDoc({
swaggerDefinition: {
info: {
description: 'This API is responsible for managing the information \
\ about students as well as businesses and admin along with their authentication, \
\ authorization. It includes the basic CRUD operations for users, registration, login and password reset.',
title: 'Rudigo Portfolio',
contact: {
name: ' Okpara Franklin',
email: '[email protected]'
},
version: '1.0.0',
},
host: '18.220.175.109',
// host: 'localhost:3000',
basePath: '/',
produces: ['application/json'],
consumes: ['application/json'],
// securityDefinition: {
// ApiKeyAuth: {
// type: 'apiKey',
// name: 'x-access-token',
// in: 'header'
// }
// },
// security: [
// { ApiKeyAuth: []}
// ]
},
// path to the API docs
apis: [
'./controllers/account/*.js'
]
});
// var options = {
// // import swaggerDefinitions
// swaggerDefinition:swaggerDefinition,}
// // initialize swagger-jsdoc
// var swaggerspec = swaggerJSDoc();
// serve swagger
app.get('/swagger.json', function(req, res) {
res.setHeader('Content-Type', 'application/json');
res.send(spec);
});
var config = require('./config');
//consistent reply functions from all endpoints
var reply = require('./middlewares/reply');
app.use(reply.setupResponder);
mongoose.connect(config.mongoUrl);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error'));
db.once('open', ()=> console.log('connected to rudigo_portfolio'));
// var acl = require('acl');
// acl = new acl(new acl.mongodbBackend(mongoose.connection.db,'_acl'));
// acl.middleware();
//routers
var account = require('./routers/account');
app.use('/account',account);
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use('/', index);
app.use('/users', users);
// app.use('/swagger',swagger);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
// // error handler
// app.use(function(err, req, res, next) {
// if (typeof(err) != object){
// res.status(500).send("we don't ");
// return;
// }
// if (!err.message || !err.status){
// res.status(500).send("we don't ");
// return;
// }
// // set locals, only providing error in development
// res.locals.message = err.message;
// res.locals.error = req.app.get('env') === 'development' ? err : {};
// // render the error page
// res.status(err.status || 500);
// res.render('error');
// });
module.exports = app;