-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathindex.js
79 lines (64 loc) · 1.95 KB
/
index.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
const express = require('express');
const fs = require('fs');
const url = require('url');
const querystring = require('querystring');
const swaggerJsDoc = require('swagger-jsdoc');
const swaggerUI = require('swagger-ui-express');
const rateLimter = require('./util/RateLimiter');
const stats = require('./util/Stats');
const bodyParser = require('body-parser');
const cors = require('cors');
require('dotenv').config();
const app = express();
const port = process.env.PORT || 8080;
app.use(express.static('public'));
app.use((req, res, next) => {
const parsedQs = querystring.parse(url.parse('https://api.monkedev.com' + req.originalUrl).query);
req.urlParams = parsedQs;
next();
});
app.use(cors());
app.use(rateLimter);
app.use(stats);
app.use(bodyParser.json());
const swaggerOptions = {
swaggerDefinition: {
info: {
title: 'MonkeDev - API',
description: 'The MonkeDev API'
},
servers: ['https://api.monkedev.com/']
},
apis: [__dirname + '/Routes/*.js']
};
const swaggerDocs = swaggerJsDoc(swaggerOptions);
app.use('/docs', swaggerUI.serve, swaggerUI.setup(swaggerDocs));
const setFolder = (dir) => {
const routes = fs.readdirSync(dir);
routes.forEach(route => {
if(route.endsWith('.js')) setFile(dir + '/' + route);
else setFolder(dir + '/' + route);
});
};
const setFile = (dir) => {
const file = require(dir);
app.use(file.end, file.router);
};
const Init = async () => {
await require('./Database/Init')();
process.s = new (require('./Database/UserManager'))();
const routes = fs.readdirSync(__dirname + '/Routes');
routes.forEach(route => {
if(route.endsWith('.js')) setFile(__dirname + '/Routes/' + route);
else setFolder(__dirname + '/Routes/' + route);
});
app.use((req, res, next) => {
if(req.originalUrl.startsWith('/docs/') || req.originalUrl == '/') return next();
return res.status(404).json({
error: true,
message: 'Invalid endPoint'
});
});
app.listen(port, () => console.log('on port: ' + port));
};
Init();