-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathserver.js
77 lines (66 loc) · 2.24 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
const config = require('config');
const moment = require('moment');
const express = require('express');
const app = express();
const { Client } = require('@elastic/elasticsearch');
const client = new Client({ node: config.get('elasticsearch.uri') });
const { count, countAround } = require('./services/count');
const { statsByArrondissement, statsByType, statsByMonth, statsPropreteByArrondissement } = require('./services/stats');
app.get('/', function (req, res) {
res.send('DansMaRue Stats API');
});
app.get('/_count', function (req, res) {
const from = req.query.from;
const to = req.query.to;
if (from !== undefined && !moment(from, 'YYYY-MM-DD', true).isValid()) {
res.status(400).send('Unvalid query parameter: from');
} else {
if (to !== undefined && !moment(to, 'YYYY-MM-DD', true).isValid()) {
res.status(400).send('Unvalid query parameter: to');
} else {
count(client, from, to, (data) => {
res.json(data);
});
}
}
});
app.get('/around/_count', function (req, res) {
const lat = req.query.lat;
const lon = req.query.lon;
const radius = req.query.radius;
if (!lat || isNaN(parseFloat(lat))) {
res.status(400).send('Missing or malformed query parameter: lat');
} else {
if (!lon || isNaN(parseFloat(lon))) {
res.status(400).send('Missing or malformed query parameter: lon');
} else {
countAround(client, parseFloat(lat), parseFloat(lon), radius, (data) => {
res.json(data);
});
}
}
});
app.get('/stats/_ByArrondissement', function (req, res) {
statsByArrondissement(client, (data) => {
res.json(data);
});
});
app.get('/stats/_ByType', function (req, res) {
statsByType(client, (data) => {
res.json(data);
});
});
app.get('/stats/_ByMonth', function (req, res) {
statsByMonth(client, (data) => {
res.json(data);
});
});
app.get('/stats/proprete/_ByArrondissement', function (req, res) {
statsPropreteByArrondissement(client, (data) => {
res.json(data);
});
});
const port = process.env.PORT || 3000;
app.listen(port, function () {
console.log(`Server listening on port ${port}`);
});