forked from sensinov/djane
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
110 lines (85 loc) · 3.31 KB
/
server.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
/*******************************************************************************
* Copyright (c) 2019 sensinov (www.sensinov.com)
* 41 Rue de la découverte, 31676 Labège, France
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Mahdi Ben Alaya (Project co-founder) - Management and initial specification,
* design, implementation, test and documentation.
* Ghada Gharbi (Project co-founder) - Management and initial specification,
* design, implementation, test and documentation.
* Authors:
* Ghada Gharbi < ghada.gharbi@sensinov.com >
******************************************************************************/
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const createError = require('http-errors');
const config = require ('./config/config');
const mongo = require ('./lib/mongo');
//to send data in json format
app.use(bodyParser.json( {type : ['application/json', 'application/ld+json']}));
//The urlencoded method within body-parser tells body-parser to extract data from the <form> element and add them to the body property in the request object.
app.use(bodyParser.urlencoded({extended: true}));
var checker = function (req, res, next) {
var headerAccept=req.header('Accept');
var headerContentType=req.header('Content-Type')
if (req.method == "GET") {
if ((headerAccept == 'application/ld+json') || (headerAccept == 'application/json')) {
next();
} else {
res.status(400);
res.send('Please Check Accept request header');
}
} else if ((req.method == "POST") || (req.method == "PATCH")) {
if ((headerContentType == 'application/ld+json') || (headerContentType == 'application/json')) {
next();
} else {
res.status(400);
res.send('Please Check Content-Type request header');
}
} else if (req.method == "DELETE") {
next();
}
};
app.use(checker);
//Default page
app.get('/', function(req, res) {
res.send('Welcome to NGSI-LD Open source implementation');
});
function bootstrap (){
mongo.bootstrap(function (err, result){
const entitiesRouter = require('./routes/entities');
const subscriptionRouter = require('./routes/subscriptions');
const csRegistrationRouter = require('./routes/csourceRegistrations');
const csSubscriptionRouter = require('./routes/csourceSubscriptions');
const entityOperationsRouter = require ('./routes/entityOperations');
const temporalRouter = require ('./routes/temporal')
// entities router
app.use('/', entitiesRouter);
//subscription router
app.use('/', subscriptionRouter);
/*csourceRegistration router */
app.use('/', csRegistrationRouter);
// csourceSubscription router
app.use('/', csSubscriptionRouter);
//entityOperations router
app.use ('/', entityOperationsRouter);
//entities temporal evolution Router
app.use('/', temporalRouter);
const serer=app.listen(config.serverPort, function () {
console.log('Listening on port: ' + config.serverPort);
});
});
}
bootstrap();
process.on('SIGTERM', function () {
server.close( function () {
console.log('Server terminated');
process.exit(0);
})
});