-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexpress.js
More file actions
103 lines (88 loc) · 2.75 KB
/
express.js
File metadata and controls
103 lines (88 loc) · 2.75 KB
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
var express = require('express');
var parser = require('body-parser');
var multer = require('multer');
var https = require('https');
var http = require('http');
var fs = require('fs');
var merge = require('merge');
var val = require('validator');
var path = require('path');
module.exports = function (config, functions) {
var module = {};
//Express
var app = express();
//Middleware
app.use(parser.json());
app.use(parser.urlencoded({ extended: true }));
app.use(multer({ dest: config.path.uploads}))
app.set('case sensitive routing', true);
app.set('trust proxy', false);
//Headers
app.use(function(req,res,next){
res.setHeader('X-Powered-By', 'Dingle');
next();
});
//Errors
app.all('/',function(req, res, next){
res.status(404).json({ success: false, message: 'Function could not be found', output: {} });
next();
});
//HTTP
if (config.http.listen != ''){
http.createServer(app).listen(config.http.port, config.http.listen);
console.log('HTTP listening at ' + config.http.listen + ':' + config.http.port);
}
//HTTPS
if (config.https.listen != ''){
https.createServer({
key: fs.readFileSync(config.https.ssl.key),
cert: fs.readFileSync(config.https.ssl.cert)
}, app).listen(config.https.port, config.https.listen);
console.log('HTTPS listening at ' + config.https.listen + ':' + config.https.port);
}
//Function
app.all('/:function/', function(req, res, next) {
//Parameters
var params = merge.recursive(req.query, req.body, req.files);
//Find Function
if (functions.hasOwnProperty(req.params.function)){
var func = functions[req.params.function];
//Check Methods
if (func.methods.indexOf(req.method) != -1){
//Execute Function
func.run(params, function(success, message, output, download){
if (success){
//Check download and absolute values
if (download){
if (!path.isAbsolute(download)){
download = path.join(config.path.downloads,download);
}
//Check existance
fs.exists(download, function(exists){
if (exists){
res.status(200).download(download);
}else{
res.status(200).json({ success: success, message: message, output: output });
next();
}
});
}else{
res.status(200).json({ success: success, message: message, output: output });
next();
}
}else{
res.status(200).json({ success: success, message: message, output: output });
next();
}
}, req);
}else{
res.status(404).json({ success: false, message: 'Function could not be found', output: {} });
next();
}
}else{
res.status(404).json({ success: false, message: 'Function could not be found', output: {} });
next();
}
});
return app;
};