diff --git a/middleware/distance.js b/middleware/distance.js index 389b724b..eb1d7c21 100644 --- a/middleware/distance.js +++ b/middleware/distance.js @@ -1,4 +1,5 @@ var geolib = require('geolib'); +var check = require('check-types'); function setup() { @@ -13,14 +14,20 @@ function computeDistances(req, res, next) { return next(); } - if ( !(req.clean.hasOwnProperty('lat') && req.clean.hasOwnProperty('lon')) ) { + if (!(check.number(req.clean['point.lat']) && + check.number(req.clean['point.lon']))) { return next(); } + var point = { + latitude: req.clean['point.lat'], + longitude: req.clean['point.lon'] + }; + res.data.forEach(function (place) { // the result of getDistance is in meters, so convert to kilometers place.distance = geolib.getDistance( - { latitude: req.clean.lat, longitude: req.clean.lon }, + point, { latitude: place.center_point.lat, longitude: place.center_point.lon } ) / 1000; }); diff --git a/test/unit/middleware/distance.js b/test/unit/middleware/distance.js index 81cf6871..da868e45 100644 --- a/test/unit/middleware/distance.js +++ b/test/unit/middleware/distance.js @@ -6,8 +6,8 @@ module.exports.tests.computeDistance = function(test, common) { test('valid lat/lon and results', function(t) { var req = { clean: { - lat: 45, - lon: -77 + 'point.lat': 45, + 'point.lon': -77 } }; var res = {