UNPKG

2.91 kBJavaScriptView Raw
1var config = {
2 'PostgresURL': process.env.OSM_COMMENTS_POSTGRES_URL || 'postgres://postgres@localhost/osm-comments'
3};
4require('./lib/config')(config);
5
6var express = require('express');
7var notes = require('./notes/index');
8var changesets = require('./changesets/index');
9var users = require('./users/index');
10var changes = require('./changes/index');
11var cors = require('cors');
12var errors = require('mapbox-error');
13var ErrorHTTP = require('mapbox-error').ErrorHTTP;
14var customErrors = require('./errors');
15var moment = require('moment');
16var server = module.exports = express();
17
18server.use(cors());
19
20server.get('/', function(req, res) {
21 res.json({'status': 'ok'});
22});
23
24server.get('/api/v1/notes', function(req, res, next) {
25 notes.search(req.query, function(err, geojson) {
26 if (err) {
27 return next(err);
28 }
29 res.json(geojson);
30 });
31});
32
33server.get('/api/v1/changesets', function(req, res, next) {
34 changesets.search(req.query, function(err, geojson) {
35 if (err) {
36 return next(err);
37 }
38 res.json(geojson);
39 });
40});
41
42server.get('/api/v1/notes/:id', function(req, res, next) {
43 notes.get(req.params.id, function(err, geojson) {
44 if (err) {
45 return next(err);
46 }
47 res.json(geojson);
48 });
49});
50
51server.get('/api/v1/changesets/:id', function(req, res, next) {
52 changesets.get(req.params.id, function(err, geojson) {
53 if (err) {
54 return next(err);
55 }
56 res.json(geojson);
57 });
58});
59
60server.get('/api/v1/users/name/:name', function(req, res, next) {
61 users.getName(req.params.name, function(err, json) {
62 if (err) {
63 return next(err);
64 }
65 res.json(json);
66 });
67});
68
69server.get('/api/v1/users/id/:id', function(req, res, next) {
70 users.getId(req.params.id, function(err, json) {
71 if (err) {
72 return next(err);
73 }
74 res.json(json);
75 });
76});
77
78server.get('/api/v1/stats/', function(req, res, next) {
79 var to = req.query.to || moment().toISOString();
80 var from = req.query.from || moment().subtract(1, 'hours').toISOString();
81 var users = req.query.users || false;
82 var tags = req.query.tags || false;
83 var bbox = req.query.bbox || false;
84 changes.get(from, to, users, tags, bbox)
85 .then(function(d) {res.json(d);})
86 .catch(next);
87});
88
89server.use(function(err, req, res, next) {
90 if (err instanceof customErrors.ParseError) {
91 next(new ErrorHTTP('Invalid request: ' + err.message, 422));
92 } else if (err instanceof customErrors.NotFoundError) {
93 next(new ErrorHTTP('Not found: ' + err.message, 404));
94 } else {
95 next(err);
96 }
97});
98
99server.use(errors.showError);
100server.use(errors.notFound);
101
102// server.use(function(err, req, res, next) {
103// console.log(err);
104// res.status(500).send(JSON.stringify(err));
105// });