87 lines
2.5 KiB
JavaScript
87 lines
2.5 KiB
JavaScript
var EventEmitter = require('events');
|
|
var Express = require('express');
|
|
var GeocacheModel = require('../models/geocache');
|
|
var Router = Express.Router();
|
|
var Token = require('../modules/token');
|
|
|
|
function updateGeocache (req, res, next) {
|
|
Token.verifyThen(req.get('authorization'), 'manageAppPreferences', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var GeoEvents = new EventEmitter();
|
|
var id = req.params.id;
|
|
var data = req.body;
|
|
|
|
GeoEvents.once('update', (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({ message: 'Could not get geodata' + (id ? ' for id: ' + id : ''), err: err });
|
|
}
|
|
|
|
if (result) {
|
|
res.status(200).json(result);
|
|
}
|
|
});
|
|
|
|
GeocacheModel.update(GeoEvents, id, geodata);
|
|
});
|
|
}
|
|
|
|
Router.route('/populate/:field')
|
|
.get((req, res, next) => {
|
|
Token.verifyThen(req.get('authorization'), 'manageAppPreferences', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var GeoEvents = new EventEmitter();
|
|
var method = 'populate' + (req.params.field[0].toUpperCase() + req.params.field.substring(1));
|
|
|
|
GeoEvents.once(method, (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({ message: 'Could not get geodata' + (id ? ' for id: ' + id : ''), err: err });
|
|
}
|
|
|
|
if (result) {
|
|
res.status(200).json(result);
|
|
}
|
|
});
|
|
|
|
GeocacheModel[method](GeoEvents);
|
|
});
|
|
});
|
|
|
|
Router.route('/:id?')
|
|
.get((req, res, next) => {
|
|
Token.verifyThen(req.get('authorization'), 'viewPublicDetails', (err, decoded) => {
|
|
if (err) {
|
|
res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
|
|
return;
|
|
}
|
|
|
|
var GeoEvents = new EventEmitter();
|
|
var id = req.params.id || false;
|
|
var method = id ? 'getGeo' : 'getGeos';
|
|
|
|
GeoEvents.once(method, (err, result) => {
|
|
if (err) {
|
|
res.status(500).json({ message: 'Could not get geodata' + (id ? ' for id: ' + id : ''), err: err });
|
|
}
|
|
|
|
if (result) {
|
|
res.status(200).json(result);
|
|
}
|
|
});
|
|
|
|
GeocacheModel[method](GeoEvents, id || null);
|
|
});
|
|
})
|
|
.patch( updateGeocache )
|
|
.post( updateGeocache )
|
|
.put( updateGeocache );
|
|
|
|
module.exports = Router;
|