Files
pfosi-looking-api/routes/geocache.js
2018-03-02 03:00:51 -05:00

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;