|
|
|
@ -29,6 +29,7 @@ var controllers = {
|
|
|
|
|
coarse_reverse: require('../controller/coarse_reverse'), |
|
|
|
|
mdToHTML: require('../controller/markdownToHtml'), |
|
|
|
|
libpostal: require('../controller/libpostal'), |
|
|
|
|
structured_libpostal: require('../controller/structured_libpostal'), |
|
|
|
|
place: require('../controller/place'), |
|
|
|
|
placeholder: require('../controller/placeholder'), |
|
|
|
|
search: require('../controller/search'), |
|
|
|
@ -97,6 +98,7 @@ const PlaceHolder = require('../service/configurations/PlaceHolder');
|
|
|
|
|
const PointInPolygon = require('../service/configurations/PointInPolygon'); |
|
|
|
|
const Language = require('../service/configurations/Language'); |
|
|
|
|
const Interpolation = require('../service/configurations/Interpolation'); |
|
|
|
|
const Libpostal = require('../service/configurations/Libpostal'); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Append routes to app |
|
|
|
@ -123,6 +125,18 @@ function addRoutes(app, peliasConfig) {
|
|
|
|
|
const interpolationService = serviceWrapper(interpolationConfiguration); |
|
|
|
|
const isInterpolationEnabled = _.constant(interpolationConfiguration.isEnabled()); |
|
|
|
|
|
|
|
|
|
// standard libpostal should use req.clean.text for the `address` parameter
|
|
|
|
|
const libpostalConfiguration = new Libpostal( |
|
|
|
|
_.defaultTo(peliasConfig.api.services.libpostal, {}), |
|
|
|
|
_.property('clean.text')); |
|
|
|
|
const libpostalService = serviceWrapper(libpostalConfiguration); |
|
|
|
|
|
|
|
|
|
// structured libpostal should use req.clean.parsed_text.address for the `address` parameter
|
|
|
|
|
const structuredLibpostalConfiguration = new Libpostal( |
|
|
|
|
_.defaultTo(peliasConfig.api.services.libpostal, {}), |
|
|
|
|
_.property('clean.parsed_text.address')); |
|
|
|
|
const structuredLibpostalService = serviceWrapper(structuredLibpostalConfiguration); |
|
|
|
|
|
|
|
|
|
// fallback to coarse reverse when regular reverse didn't return anything
|
|
|
|
|
const coarseReverseShouldExecute = all( |
|
|
|
|
isPipServiceEnabled, not(hasRequestErrors), not(hasResponseData) |
|
|
|
@ -133,6 +147,12 @@ function addRoutes(app, peliasConfig) {
|
|
|
|
|
not(isRequestSourcesOnlyWhosOnFirst) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// for libpostal to execute for structured requests, req.clean.parsed_text.address must exist
|
|
|
|
|
const structuredLibpostalShouldExecute = all( |
|
|
|
|
not(hasRequestErrors), |
|
|
|
|
hasParsedTextProperties.all('address') |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// execute placeholder if libpostal only parsed as admin-only and needs to
|
|
|
|
|
// be geodisambiguated
|
|
|
|
|
const placeholderGeodisambiguationShouldExecute = all( |
|
|
|
@ -257,7 +277,7 @@ function addRoutes(app, peliasConfig) {
|
|
|
|
|
sanitizers.search.middleware(peliasConfig.api), |
|
|
|
|
middleware.requestLanguage, |
|
|
|
|
middleware.calcSize(), |
|
|
|
|
controllers.libpostal(libpostalShouldExecute), |
|
|
|
|
controllers.libpostal(libpostalService, libpostalShouldExecute), |
|
|
|
|
controllers.placeholder(placeholderService, geometricFiltersApply, placeholderGeodisambiguationShouldExecute), |
|
|
|
|
controllers.placeholder(placeholderService, geometricFiltersDontApply, placeholderIdsLookupShouldExecute), |
|
|
|
|
controllers.search_with_ids(peliasConfig.api, esclient, queries.address_using_ids, searchWithIdsShouldExecute), |
|
|
|
@ -287,6 +307,7 @@ function addRoutes(app, peliasConfig) {
|
|
|
|
|
sanitizers.structured_geocoding.middleware(peliasConfig.api), |
|
|
|
|
middleware.requestLanguage, |
|
|
|
|
middleware.calcSize(), |
|
|
|
|
controllers.structured_libpostal(structuredLibpostalService, structuredLibpostalShouldExecute), |
|
|
|
|
controllers.search(peliasConfig.api, esclient, queries.structured_geocoding, not(hasResponseDataOrRequestErrors)), |
|
|
|
|
postProc.trimByGranularityStructured(), |
|
|
|
|
postProc.distances('focus.point.'), |
|
|
|
|