diff --git a/lib/service/hogfish/index.js b/lib/service/hogfish/index.js index 1d7fa85..86629a4 100644 --- a/lib/service/hogfish/index.js +++ b/lib/service/hogfish/index.js @@ -39,9 +39,8 @@ function prepareRequest(types, op, query) { } function matchNames(n1, n2) { - let n; if (n1.length > n2.length) { - n = n1; + const n = n1; n1 = n2; n2 = n; } @@ -71,31 +70,43 @@ function isCloser(result, place) { function findPlace(result, place) { if ((!result.place || (place.name && matchNames(place.name, result.place))) && isCloser(result, place)) { - result.found = place; + place.type = result.type; + result[0] = place; } return result; } -function processResponse(response, query, result) { - let place = response.reduce(findPlace, { - place: query.place, - ll: query.ll - }).found; - if (place) { - place = { - ll: place.ll, - place: place.name, - url: place.url, - street: place.address, - town: place.city, - province: place.state, - country: place.country, - type: query.type, - service: place.service - }; - result.places = [place]; - return result; +function map(f) { + const place = { + ll: f.ll, + place: f.name, + url: f.url, + street: f.address, + town: f.city, + province: f.state, + country: f.country, + type: f.type, + service: f.service + }; + + // remove empties + return util.removeEmpties(place); +} + +function filterResponse(query, response) { + if (!query.type) { + return response; } + const places = []; + places.type = query.type; + places.place = query.place; + places.ll = query.ll; + return response.reduce(findPlace, places); +} + +function processResponse(response, query, result) { + result.places = filterResponse(query, response).map(map); + return result; } function init(options) { diff --git a/test/service/hogfish/index.js b/test/service/hogfish/index.js index 7f69b7f..f49bae0 100644 --- a/test/service/hogfish/index.js +++ b/test/service/hogfish/index.js @@ -36,7 +36,6 @@ describe('hogfish geocoding', function () { street: '11005 E Briarwood Ave', town: 'Centennial', province: 'CO', - country: undefined, type: 'fillingstation', service: { pure_gas: { @@ -65,7 +64,6 @@ describe('hogfish geocoding', function () { result.places[0].should.deepEqual({ ll: [-104.879164, 39.591416], place: 'Hyatt House Denver Tech Center', - url: undefined, street: '9280 E Costilla Ave', town: 'Englewood', province: 'CO',